<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN" class="translated-ltr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>附录C限制和限制</title>
		<link rel="stylesheet" href="mvl.css" type="text/css">
		<meta name="generator" content="DocBook XSL Stylesheets + chunker.py v1.9.2">
		<link rel="start" href="index.html" title="{书名}">
		<link rel="up" href="" title="">
		<link rel="prev" href="error-handling.html" title="附录B错误，错误代码和常见问题">
		<link rel="next" href="indexes.html" title="附录D索引">
	 
		<link type="text/css" rel="stylesheet" charset="UTF-8" href="https://translate.googleapis.com/translate_static/css/translateelement.css">
	</head>

	<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
		<div class="navheader">
			<table width="100%" summary="Navigation header">
				<tbody>
					<tr>
						<th colspan="3" align="center">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">附录C限制和限制</font>
							</font>
						</th>
					</tr>
					<tr>
						<td width="20%" align="left"><a accesskey="p" href="error-handling.html">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">上一页</font>
								</font>
							</a>&nbsp;</td>
						<th width="60%" align="center"></th>
						<td width="20%" align="right">&nbsp;<a accesskey="n" href="indexes.html">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">下一个</font>
								</font>
							</a></td>
					</tr>
				</tbody>
			</table>
			<hr>
		</div>
		<div class="appendix">
			<div class="titlepage">
				<div>
					<div>
						<h1 class="title"><a name="restrictions"></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">附录C限制和限制</font>
							</font>
						</h1>

					</div>

				</div>

			</div>
			<div class="toc">
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">目录</font>
						</font>
					</b></p>
				<dl class="toc"><dt><span class="section"><a href="restrictions.html#stored-program-restrictions">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.1存储程序的限制</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="restrictions.html#condition-handling-restrictions">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.2条件处理的限制</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="restrictions.html#cursor-restrictions">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.3服务器端游标的限制</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="restrictions.html#subquery-restrictions">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.4子查询的限制</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="restrictions.html#view-restrictions">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.5对视图的限制</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="restrictions.html#xa-restrictions">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.6 XA事务的限制</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="restrictions.html#charset-restrictions">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.7字符集的限制</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="restrictions.html#performance-schema-restrictions">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.8性能模式的限制</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="restrictions.html#pluggable-authentication-restrictions">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.9可插拔认证的限制</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="restrictions.html#limits">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.10 MySQL中的限制</font>
								</font>
							</a></span></dt>
					<dd>
						<dl><dt><span class="section"><a href="restrictions.html#joins-limits">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">C.10.1连接限制</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="restrictions.html#database-count-limit">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">C.10.2数据库和表的数量限制</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="restrictions.html#table-size-limit">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">C.10.3桌面尺寸限制</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="restrictions.html#column-count-limit">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">C.10.4表列数和行大小的限制</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="restrictions.html#limits-windows">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">C.10.5 Windows平台限制</font>
										</font>
									</a></span></dt></dl>
					</dd>
				</dl>
			</div>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						此处的讨论描述了适用于使用MySQL功能（如子查询或视图）的限制。
					</font>
				</font>
			</p>
			<div class="section">

				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="stored-program-restrictions"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.1存储程序的限制</font>
								</font>
							</h2>
						</div>
					</div>
				</div>
				<a class="indexterm" name="idm140091496599264"></a><a class="indexterm" name="idm140091496597776"></a><a class="indexterm"
				 name="idm140091496596288"></a><a class="indexterm" name="idm140091496594800"></a><a class="indexterm" name="idm140091496593312"></a><a
				 class="indexterm" name="idm140091496591824"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							这些限制适用于</font>
					</font><a class="xref" href="stored-objects.html" title="第24章存储的对象">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第24章</font>
						</font><i>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">存储对象中</font>
							</font>
						</i>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">描述的功能
						</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							这里提到的一些限制适用于所有存储的例程; </font>
						<font style="vertical-align: inherit;">也就是说，存储过程和存储的函数。</font>
						<font style="vertical-align: inherit;">还存在一些
						</font>
					</font><a class="link" href="restrictions.html#stored-routines-function-restrictions" title="存储函数的限制">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">特定于存储函数的限制，</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">但不存在对存储过程的限制。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							存储函数的限制也适用于触发器。</font>
						<font style="vertical-align: inherit;">还有一些
						</font>
					</font><a class="link" href="restrictions.html#stored-routines-trigger-restrictions" title="触发器的限制">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">特定于触发器的限制</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							存储过程的限制也适用于</font>
					</font><a class="link" href="sql-syntax.html#do" title="13.2.3 DO语法"><code class="literal">DO</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">Event Scheduler事件定义</font>
						<font style="vertical-align: inherit;">的
						</font>
						<font style="vertical-align: inherit;">子句。</font>
						<font style="vertical-align: inherit;">还有一些
						</font>
					</font><a class="link" href="restrictions.html#stored-routines-event-restrictions" title="事件调度程序限制">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">特定于事件的限制</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<h3><a name="stored-routine-sql-restrictions"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">存储例程中不允许的SQL语句</font>
					</font>
				</h3>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							存储的例程不能包含任意SQL语句。</font>
						<font style="vertical-align: inherit;">不允许以下声明：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										锁定语句</font>
								</font><a class="link" href="sql-syntax.html#lock-tables" title="13.3.6 LOCK TABLES和UNLOCK TABLES语法"><code
									 class="literal">LOCK
										TABLES</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
								</font><a class="link" href="sql-syntax.html#lock-tables" title="13.3.6 LOCK TABLES和UNLOCK TABLES语法"><code
									 class="literal">UNLOCK
										TABLES</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#alter-view" title="13.1.11 ALTER VIEW语法"><code class="literal">ALTER VIEW</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#load-data" title="13.2.7 LOAD DATA语法"><code class="literal">LOAD DATA</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和</font>
								</font><code class="literal">LOAD
									TABLE</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										SQL语句制备（</font>
								</font><a class="link" href="sql-syntax.html#prepare" title="13.5.1 PREPARE语法"><code class="literal">PREPARE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><a class="link" href="sql-syntax.html#execute" title="13.5.2 EXECUTE语法"><code class="literal">EXECUTE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><a class="link" href="sql-syntax.html#deallocate-prepare" title="13.5.3 DEALLOCATE PREPARE语法"><code
									 class="literal">DEALLOCATE PREPARE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">）可以在存储过程中使用，但没有存储功能或触发器。</font>
									<font style="vertical-align: inherit;">因此，存储的函数和触发器不能使用动态SQL（将语句构造为字符串然后执行它们）。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										通常，SQL预处理语句中不允许的语句也不允许存储在程序中。</font>
									<font style="vertical-align: inherit;">有关作为预准备语句支持的语句列表，请参见
									</font>
								</font><a class="xref" href="sql-syntax.html#sql-syntax-prepared-statements" title="13.5准备好的SQL语句语法">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第13.5节“准备的SQL语句语法”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">例外是</font>
								</font><a class="link" href="sql-syntax.html#signal" title="13.6.7.5 SIGNAL语法"><code class="literal">SIGNAL</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><a class="link" href="sql-syntax.html#resignal" title="13.6.7.4 RESIGNAL语法"><code class="literal">RESIGNAL</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
								</font><a class="link" href="sql-syntax.html#get-diagnostics" title="13.6.7.3获取诊断语法"><code class="literal">GET
										DIAGNOSTICS</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，作为准备好的陈述是不允许的，但在存储的程序中是允许的。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										由于局部变量仅在存储程序执行期间在范围内，因此在存储程序中创建的预准备语句中不允许引用它们。</font>
									<font style="vertical-align: inherit;">准备好的语句范围是当前会话，而不是存储的程序，因此语句可以在程序结束后执行，此时变量将不再在范围内。</font>
									<font style="vertical-align: inherit;">例如，</font>
									<font style="vertical-align: inherit;">不能用作预备语句。</font>
									<font style="vertical-align: inherit;">此限制也适用于存储过程和函数参数。</font>
									<font style="vertical-align: inherit;">请参见
									</font><a class="xref" href="sql-syntax.html#prepare" title="13.5.1 PREPARE语法">
										<font style="vertical-align: inherit;">第13.5.1节“PREPARE语法”</font>
									</a>
									<font style="vertical-align: inherit;">。
									</font>
								</font><code class="literal">SELECT ... INTO
									<em class="replaceable"><code>local_var</code></em></code>
								<font style="vertical-align: inherit;"></font><a class="xref" href="sql-syntax.html#prepare" title="13.5.1 PREPARE语法">
									<font style="vertical-align: inherit;"></font>
								</a>
								<font style="vertical-align: inherit;"></font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										在所有存储的程序（存储过程和函数，触发器和事件）中，解析器将其
									</font>
								</font><a class="link" href="sql-syntax.html#commit" title="13.3.1 START TRANSACTION，COMMIT和ROLLBACK语法"><code
									 class="literal">BEGIN [WORK]</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										视为</font>
								</font><a class="link" href="sql-syntax.html#begin-end" title="13.6.1 BEGIN ... END复合语句语法"><code class="literal">BEGIN
										...
										END</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">块</font>
									<font style="vertical-align: inherit;">的开头
									</font>
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">要在此上下文中开始事务，请</font>
								</font><a class="link" href="sql-syntax.html#commit" title="13.3.1 START TRANSACTION，COMMIT和ROLLBACK语法"><code
									 class="literal">START
										TRANSACTION</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">改用。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<h3><a name="stored-routines-function-restrictions"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">存储函数的限制</font>
					</font>
				</h3>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							存储的函数中不允许使用以下附加语句或操作。</font>
						<font style="vertical-align: inherit;">它们在存储过程中是允许的，除了从存储函数或触发器中调用的存储过程之外。</font>
						<font style="vertical-align: inherit;">例如，如果
						</font>
					</font><a class="link" href="sql-syntax.html#flush" title="13.7.7.3 FLUSH语法"><code class="literal">FLUSH</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">在存储过程中使用，则无法从存储的函数或触发器调用该存储过程。
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										执行显式或隐式提交或回滚的语句。</font>
									<font style="vertical-align: inherit;">SQL标准不要求支持这些语句，该标准规定每个DBMS供应商可以决定是否允许它们。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										返回结果集的语句。</font>
									<font style="vertical-align: inherit;">这包括
									</font>
								</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">不具有的声明</font>
									<font style="vertical-align: inherit;">条款等语句，如</font>
									<font style="vertical-align: inherit;">，
									</font>
									<font style="vertical-align: inherit;">和
									</font>
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">函数可以</font>
									<font style="vertical-align: inherit;">使用游标和</font>
									<font style="vertical-align: inherit;">语句</font>
									<font style="vertical-align: inherit;">来处理结果集
									</font>
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">请参见</font><a class="xref" href="sql-syntax.html#select-into" title="13.2.10.1 SELECT ... INTO语法">
										<font style="vertical-align: inherit;">第13.2.10.1节“SELECT ... INTO语法”</font>
									</a>
									<font style="vertical-align: inherit;">和
									</font><a class="xref" href="sql-syntax.html#cursors" title="13.6.6游标">
										<font style="vertical-align: inherit;">第13.6.6节“游标”</font>
									</a>
									<font style="vertical-align: inherit;">。
									</font>
								</font><code class="literal">INTO
									<em class="replaceable"><code>var_list</code></em></code>
								<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#show" title="13.7.6 SHOW语法"><code
									 class="literal">SHOW</code></a>
								<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN语法"><code
									 class="literal">EXPLAIN</code></a>
								<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#check-table" title="13.7.3.2检查表语法"><code
									 class="literal">CHECK TABLE</code></a>
								<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#select-into" title="13.2.10.1 SELECT ... INTO语法"><code
									 class="literal">SELECT ... INTO
										<em class="replaceable"><code>var_list</code></em></code></a>
								<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#fetch" title="13.6.6.3游标FETCH语法"><code
									 class="literal">FETCH</code></a>
								<font style="vertical-align: inherit;"></font><a class="xref" href="sql-syntax.html#select-into" title="13.2.10.1 SELECT ... INTO语法">
									<font style="vertical-align: inherit;"></font>
								</a>
								<font style="vertical-align: inherit;"></font><a class="xref" href="sql-syntax.html#cursors" title="13.6.6游标">
									<font style="vertical-align: inherit;"></font>
								</a>
								<font style="vertical-align: inherit;"></font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#flush" title="13.7.7.3 FLUSH语法"><code class="literal">FLUSH</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;"> 声明。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										存储的函数不能递归使用。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										存储的函数或触发器不能通过调用函数或触发器的语句修改已经使用（用于读取或写入）的表。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										如果在不同别名下的存储函数中多次引用临时表，</font>
									<font style="vertical-align: inherit;">
										则会发生错误，即使引用出现在函数内的不同语句中也是如此。
									</font>
								</font><code class="literal">Can't reopen
									table:
									'<em class="replaceable"><code>tbl_name</code></em><code class="literal"></code>'</code>
								<font style="vertical-align: inherit;"></font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#handler" title="13.2.4 HANDLER语法"><code class="literal">HANDLER ...
										READ</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;"> 调用存储函数的语句可能导致复制错误，并且是不允许的。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<h3><a name="stored-routines-trigger-restrictions"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">触发器的限制</font>
					</font>
				</h3>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于触发器，以下附加限制适用：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										外键操作不会激活触发器。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										使用基于行的复制时，从站上的触发器不会由源自主服务器的语句激活。</font>
									<font style="vertical-align: inherit;">使用基于语句的复制时，将激活从站上的触发器。</font>
									<font style="vertical-align: inherit;">有关更多信息，请参见
									</font>
								</font><a class="xref" href="replication.html#replication-features-triggers" title="17.4.1.35复制和触发器">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第17.4.1.35节“复制和触发器”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#return" title="13.6.5.7 RETURN语法"><code
									 class="literal">RETURN</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">触发器中不允许使用</font>
									<font style="vertical-align: inherit;">
										该</font>
									<font style="vertical-align: inherit;">语句，</font>
									<font style="vertical-align: inherit;">该</font>
									<font style="vertical-align: inherit;">语句不能返回值。</font>
									<font style="vertical-align: inherit;">要立即退出触发器，请使用该
									</font>
								</font><a class="link" href="sql-syntax.html#leave" title="13.6.5.4 LEAVE语法"><code class="literal">LEAVE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">语句。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;"></font><code class="literal">mysql</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">数据库中的</font>
									<font style="vertical-align: inherit;">
										表不允许触发器
									</font>
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">也不允许他们
									</font>
								</font><code class="literal">INFORMATION_SCHEMA</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">或
									</font>
								</font><code class="literal">performance_schema</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">桌子。</font>
									<font style="vertical-align: inherit;">这些表实际上是视图上不允许的视图和触发器。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										触发器高速缓存不会检测基础对象的元数据何时发生更改。</font>
									<font style="vertical-align: inherit;">如果触发器使用表并且自从触发器加载到缓存后表已更改，则触发器将使用过时的元数据进行操作。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<h3><a name="stored-routine-name-conflicts"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">存储例程中的名称冲突</font>
					</font>
				</h3>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							相同的标识符可用于例程参数，局部变量和表列。</font>
						<font style="vertical-align: inherit;">此外，可以在嵌套块中使用相同的局部变量名称。</font>
						<font style="vertical-align: inherit;">例如：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE PROCEDURE p（i INT）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
开始</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  DECLARE i INT DEFAULT 0;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  SELECT i FROM t;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  开始</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    DECLARE i INT DEFAULT 1;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    SELECT i FROM t;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  结束;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
结束;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在这种情况下，标识符不明确，并且适​​用以下优先规则：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										局部变量优先于例程参数或表列。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										例程参数优先于表列。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										内部块中的局部变量优先于外部块中的局部变量。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							变量优先于表列的行为是非标准的。
						</font>
					</font>
				</p>
				<h3><a name="stored-routines-replication-restrictions"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">复制注意事项</font>
					</font>
				</h3>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							使用存储的例程可能会导致复制问题。</font>
					</font><a class="xref" href="stored-objects.html#stored-programs-logging" title="24.7存储程序二进制日志">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第24.7节“存储程序二进制日志记录”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">中将进一步讨论此问题</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							该
						</font>
						<font style="vertical-align: inherit;">
							选项适用于表，视图和触发器。</font>
						<font style="vertical-align: inherit;">它不适用于存储过程和函数或事件。</font>
						<font style="vertical-align: inherit;">要过滤对后一个对象进行操作的语句，请使用一个或多个
						</font>
						<font style="vertical-align: inherit;">选项。
						</font>
					</font><a class="link" href="replication.html#option_mysqld_replicate-wild-do-table"><code class="option">--replicate-wild-do-table=<em
							 class="replaceable"><code>db_name.tbl_name</code></em></code></a>
					<font style="vertical-align: inherit;"></font><code class="option">--replicate-*-db</code>
					<font style="vertical-align: inherit;"></font>
				</p>
				<h3><a name="stored-routines-debugging-restrictions"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">调试注意事项</font>
					</font>
				</h3>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							没有存储的例程调试工具。
						</font>
					</font>
				</p>
				<h3><a name="stored-routines-standard-restrictions"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">SQL：2003标准中不支持的语法</font>
					</font>
				</h3>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							MySQL存储的例程语法基于SQL：2003标准。</font>
						<font style="vertical-align: inherit;">目前不支持该标准中的以下项目：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<code class="literal">UNDO</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;"> 处理器
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<code class="literal">FOR</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;"> 循环
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<h3><a name="idm140091496500304"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">并发注意事项</font>
					</font>
				</h3>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							为了防止会话之间的交互问题，当客户端发出语句时，服务器使用可用于执行语句的例程和触发器的快照。</font>
						<font style="vertical-align: inherit;">也就是说，服务器计算可在语句执行期间使用的过程，函数和触发器的列表，加载它们，然后继续执行语句。</font>
						<font style="vertical-align: inherit;">在执行语句时，它不会看到其他会话执行的例程的更改。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							为了获得最大的并发性，存储的函数应该最小化它们的副作用; </font>
						<font style="vertical-align: inherit;">特别是，更新存储函数中的表可以减少该表上的并发操作。</font>
						<font style="vertical-align: inherit;">存储函数在执行之前获取表锁，以避免由于语句执行顺序与日志中出现的顺序不匹配而导致二进制日志不一致。</font>
						<font style="vertical-align: inherit;">当使用基于语句的二进制日志记录时，将记录调用函数的语句，而不是在函数内执行的语句。</font>
						<font style="vertical-align: inherit;">因此，更新相同基础表的存储函数不会并行执行。</font>
						<font style="vertical-align: inherit;">相反，存储过程不会获取表级锁。</font>
						<font style="vertical-align: inherit;">存储过程中执行的所有语句都写入二进制日志，</font>
						<font style="vertical-align: inherit;">甚至是基于语句的二进制日志记录。</font>
						<font style="vertical-align: inherit;">看到
						</font>
					</font><a class="xref" href="stored-objects.html#stored-programs-logging" title="24.7存储程序二进制日志">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第24.7节“存储程序二进制日志”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<h3><a name="stored-routines-event-restrictions"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">事件调度程序限制</font>
					</font>
				</h3>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							以下限制特定于事件调度程序：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										事件名称以不区分大小写的方式处理。</font>
									<font style="vertical-align: inherit;">例如，您不能在同一个数据库中使用名称</font>
								</font><code class="literal">anEvent</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
									<font style="vertical-align: inherit;">两个事件</font>
								</font><code class="literal">AnEvent</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										如果通过变量指定事件名称，则可能无法在存储的程序中创建，更改或删除事件。</font>
									<font style="vertical-align: inherit;">事件也可能无法创建，更改或删除存储的例程或触发器。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										声明</font>
								</font><a class="link" href="sql-syntax.html#lock-tables" title="13.3.6 LOCK TABLES和UNLOCK TABLES语法"><code
									 class="literal">LOCK TABLES</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">生效时，</font>
									<font style="vertical-align: inherit;">禁止对事件进行DDL声明
									</font>
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										使用间隔事件时序</font>
								</font><code class="literal">YEAR</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><code class="literal">QUARTER</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，</font>
								</font><code class="literal">MONTH</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，并
									</font>
								</font><code class="literal">YEAR_MONTH</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">在几个月解决; </font>
									<font style="vertical-align: inherit;">使用任何其他间隔的那些在几秒钟内解决。</font>
									<font style="vertical-align: inherit;">没有办法使计划在同一秒发生的事件以给定顺序执行。</font>
									<font style="vertical-align: inherit;">此外 - 由于舍入，线程应用程序的性质以及创建事件和发出执行事件所需的非零时间长度这一事实可能会延迟1或2秒。</font>
									<font style="vertical-align: inherit;">但是，
									</font>
								</font><a class="link" href="information-schema.html#events-table" title="25.10 INFORMATION_SCHEMA事件表"><code
									 class="literal">INFORMATION_SCHEMA.EVENTS</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">表格
									</font>
								</font><code class="literal">LAST_EXECUTED</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">列或
									</font>
								</font><code class="literal">mysql.event</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">表格中显示的时间
									</font>
								</font><code class="literal">last_executed</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">列始终精确到实际事件执行时间的一秒之内。</font>
									<font style="vertical-align: inherit;">（另见Bug＃16522。）
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										事件正文中包含的语句的每次执行都在新连接中进行; </font>
									<font style="vertical-align: inherit;">因此，这些语句在给定的用户会话中对服务器的语句计数没有影响，例如</font>
								</font><code class="literal">Com_select</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
								</font><code class="literal">Com_insert</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">显示的
									</font>
								</font><a class="link" href="sql-syntax.html#show-status" title="13.7.6.35 SHOW STATUS语法"><code class="literal">SHOW
										STATUS</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">然而，这样的罪名</font>
								</font><span class="emphasis"><em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">是</font>
										</font>
									</em></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">在全球范围内更新。</font>
									<font style="vertical-align: inherit;">（Bug＃16422）
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										事件不支持晚于Unix Epoch结束的时间; </font>
									<font style="vertical-align: inherit;">这大约是2038年的开始。事件安排者特别不允许这样的日期。</font>
									<font style="vertical-align: inherit;">（Bug＃16396）
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">不支持</font>
								</font><code class="literal">ON SCHEDULE</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">对</font>
								</font><a class="link" href="sql-syntax.html#create-event" title="13.1.13 CREATE EVENT语法"><code class="literal">CREATE
										EVENT</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
								</font><a class="link" href="sql-syntax.html#alter-event" title="13.1.3 ALTER EVENT语法"><code class="literal">ALTER
										EVENT</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">语句</font>
									<font style="vertical-align: inherit;">
										的</font>
									<font style="vertical-align: inherit;">子句中的
									</font>
									<font style="vertical-align: inherit;">存储函数，用户定义函数和表的引用</font>
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">不允许使用这些类型的引用。</font>
									<font style="vertical-align: inherit;">（有关更多信息，请参阅Bug＃22830。）
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">NDB群集中存储的例程和触发器。&nbsp;</font>
						</font>
					</b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							使用</font>
					</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							存储引擎的</font>
						<font style="vertical-align: inherit;">表都支持存储过程，存储函数和触发器</font>
						<font style="vertical-align: inherit;">; </font>
						<font style="vertical-align: inherit;">但是，请务必记住，它们</font>
					</font><span class="emphasis"><em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">不会</font>
							</font>
						</em></span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">在充当群集SQL节点的MySQL服务器之间自动传播。</font>
						<font style="vertical-align: inherit;">这是因为存储的例程和触发器定义</font>
					</font><code class="literal">mysql</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">使用</font>
					</font><code class="literal">InnoDB</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">表</font>
						<font style="vertical-align: inherit;">存储在</font>
						<font style="vertical-align: inherit;">系统数据库的
						</font>
						<font style="vertical-align: inherit;">表中，而这些表不在Cluster节点之间复制。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							与MySQL集群表交互的任何存储程序或触发器必须通过运行适当的重新创建
						</font>
					</font><a class="link" href="sql-syntax.html#create-procedure" title="13.1.17创建过程和创建函数语法"><code class="literal">CREATE
							PROCEDURE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="sql-syntax.html#create-function" title="13.1.14 CREATE FUNCTION语法"><code class="literal">CREATE
							FUNCTION</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或者
						</font>
					</font><a class="link" href="sql-syntax.html#create-trigger" title="13.1.22 CREATE TRIGGER语法"><code class="literal">CREATE
							TRIGGER</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">说，你希望使用存储程序或触发器集群中参与的每个MySQL服务器上的发言。</font>
						<font style="vertical-align: inherit;">同样，必须在所有Cluster SQL节点上显式执行对现有存储例程或触发器的任何更改，并使用</font>
						<font style="vertical-align: inherit;">访问集群的每个MySQL Server上</font>
						<font style="vertical-align: inherit;">的相应
						</font>
					</font><code class="literal">ALTER</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">DROP</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句。
						</font>
					</font>
				</p>
				<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">

					<div class="admon-title">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								警告
							</font>
						</font>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								难道</font>
						</font><span class="emphasis"><em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">不是</font>
								</font>
							</em></span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">试图解决只是通过转换所描述的任何问题，</font>
						</font><code class="literal">mysql</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								数据库表使用的</font>
						</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								存储引擎。</font><span class="emphasis"><em>
									<font style="vertical-align: inherit;">不支持</font>
								</em></span>
						</font><span class="emphasis"><em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">更改</font>
								</font><code class="literal">mysql</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">数据库中</font>
									<font style="vertical-align: inherit;">的系统表，
									</font>
								</font>
							</em></span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								并且很可能产生不良结果。
							</font>
						</font>
					</p>
				</div>

			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="condition-handling-restrictions"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.2条件处理的限制</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<a class="indexterm" name="idm140091496454112"></a><a class="indexterm" name="idm140091496452624"></a>
				<p>
					<a class="link" href="sql-syntax.html#signal" title="13.6.7.5 SIGNAL语法"><code class="literal">SIGNAL</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="sql-syntax.html#resignal" title="13.6.7.4 RESIGNAL语法"><code class="literal">RESIGNAL</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">并且
						</font>
					</font><a class="link" href="sql-syntax.html#get-diagnostics" title="13.6.7.3获取诊断语法"><code class="literal">GET
							DIAGNOSTICS</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">不允许作为准备好的陈述。</font>
						<font style="vertical-align: inherit;">例如，此语句无效：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">准备stmt1 FROM'SIGNAL SQLSTATE“02000”';
</font></font></pre>
				<p>
					<code class="literal">SQLSTATE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">课堂</font>
					</font><code class="literal">'04'</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">上的</font>
						<font style="vertical-align: inherit;">价值
						</font>
						<font style="vertical-align: inherit;">不予特别处理。</font>
						<font style="vertical-align: inherit;">它们的处理方式与其他例外相同。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在标准SQL中，第一个条件与</font>
					</font><code class="literal">SQLSTATE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">前一个SQL语句返回</font>
						<font style="vertical-align: inherit;">的
						</font>
						<font style="vertical-align: inherit;">值有关。</font>
						<font style="vertical-align: inherit;">在MySQL中，这不能保证，所以要获得主要错误，你不能这样做：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">获得诊断条件1 @errno = MYSQL_ERRNO;
</font></font></pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							相反，这样做：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">获取诊断@cno = NUM​​BER;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
获得诊断条件@cno @errno = MYSQL_ERRNO;</font></font><font></font>
</pre>
			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="cursor-restrictions"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.3服务器端游标的限制</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<a class="indexterm" name="idm140091496439168"></a><a class="indexterm" name="idm140091496437712"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							服务器端游标使用该</font>
					</font><a class="link" href="connectors-apis.html#mysql-stmt-attr-set" title="28.7.11.3 mysql_stmt_attr_set（）"><code
						 class="literal">mysql_stmt_attr_set()</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">函数</font>
						<font style="vertical-align: inherit;">在C API中实现
						</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">存储例程中的游标使用相同的实现。</font>
						<font style="vertical-align: inherit;">服务器端游标可以在服务器端生成结果集，但不会传输到客户端，除了客户端请求的那些行。</font>
						<font style="vertical-align: inherit;">例如，如果客户端执行查询但仅对第一行感兴趣，则不传输剩余的行。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在MySQL中，服务器端游标具体化为内部临时表。</font>
						<font style="vertical-align: inherit;">最初，这是一个</font>
					</font><code class="literal">MEMORY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							表，但被转换为</font>
					</font><code class="literal">MyISAM</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">当其大小超过了的最小值表
						</font>
					</font><a class="link" href="server-administration.html#sysvar_max_heap_table_size"><code class="literal">max_heap_table_size</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><a class="link" href="server-administration.html#sysvar_tmp_table_size"><code class="literal">tmp_table_size</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">系统变量。</font>
						<font style="vertical-align: inherit;">同样的限制适用于为保存游标结果集而创建的内部临时表，以及内部临时表的其他用途。</font>
						<font style="vertical-align: inherit;">请参见</font>
					</font><a class="xref" href="optimization.html#internal-temporary-tables" title="8.4.4 MySQL中的内部临时表使用">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第8.4.4节“MySQL中的内部临时表使用”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">实现的一个限制是，对于大的结果集，通过游标检索其行可能很慢。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							游标是只读的; </font>
						<font style="vertical-align: inherit;">你不能使用游标来更新行。
						</font>
					</font>
				</p>
				<p>
					<code class="literal">UPDATE WHERE CURRENT OF</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">并且</font>
					</font><code class="literal">DELETE
						WHERE CURRENT OF</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">未实现，因为不支持可更新游标。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							游标是不可保留的（在提交后不保持打开状态）。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							游标是敏感的。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							游标是不可滚动的。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							游标没有命名。</font>
						<font style="vertical-align: inherit;">语句处理程序充当游标ID。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							每个预准备语句只能打开一个游标。</font>
						<font style="vertical-align: inherit;">如果需要多个游标，则必须准备多个语句。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							如果在准备模式下不支持该语句，则不能将游标用于生成结果集的语句。</font>
						<font style="vertical-align: inherit;">这包括语句，如</font>
					</font><a class="link" href="sql-syntax.html#check-table" title="13.7.3.2检查表语法"><code class="literal">CHECK
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">HANDLER READ</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><a class="link" href="sql-syntax.html#show-binlog-events" title="13.7.6.2显示BINLOG事件语法"><code class="literal">SHOW
							BINLOG EVENTS</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
			</div>

			<div class="section">

				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="subquery-restrictions"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.4子查询的限制</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<a class="indexterm" name="idm140091496418912"></a><a class="indexterm" name="idm140091496417456"></a>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										通常，您无法修改表并从子查询中的同一表中进行选择。</font>
									<font style="vertical-align: inherit;">例如，此限制适用于以下形式的陈述：
									</font>
								</font>
							</p>
							<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">DELETE FROM t WHERE ...（SELECT ... FROM t ...）;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
UPDATE t ... WHERE col =（SELECT ... FROM t ...）;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
{INSERT | REPLACE} INTO t（SELECT ... FROM t ...）;</font></font><font></font>
</pre>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										例外：如果对于修改后的表使用派生表并且派生表已实现而不是合并到外部查询中，则前面的禁止不适用。</font>
									<font style="vertical-align: inherit;">（请参见</font>
								</font><a class="xref" href="optimization.html#derived-table-optimization" title="8.2.2.4使用合并或实现优化派生表，视图引用和公用表表达式">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第8.2.2.4节“使用合并或实现优化派生表，视图引用和公用表表达式”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。）示例：
									</font>
								</font>
							</p>
							<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">UPDATE t ... WHERE col =（SELECT * FROM（SELECT ... FROM t ...）AS dt ...）;
</font></font></pre>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										这里派生表的结果被实现为临时表，因此</font>
								</font><code class="literal">t</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										在更新</font>
								</font><code class="literal">t</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">发生</font>
									<font style="vertical-align: inherit;">时已经选择
									</font>
									<font style="vertical-align: inherit;">了相关的行</font>
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										通常，您可以通过添加</font>
								</font><a class="link" href="optimization.html#optimizer-hints-table-level" title="表级优化器提示"><code class="literal">NO_MERGE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">优化程序提示</font>
									<font style="vertical-align: inherit;">来影响优化程序以实现派生表
									</font>
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">请参见
									</font>
								</font><a class="xref" href="optimization.html#optimizer-hints" title="8.9.3优化器提示">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第8.9.3节“优化程序提示”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										仅部分支持行比较操作：
									</font>
								</font>
							</p>
							<div class="itemizedlist">
								<ul class="itemizedlist" style="list-style-type: circle; ">
									<li class="listitem">
										<p>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">
													对于</font>
												<font style="vertical-align: inherit;">，
												</font>
												<font style="vertical-align: inherit;">可以是
												</font>
												<font style="vertical-align: inherit;">-tuple（使用行构造函数语法指定），子查询可以返回</font>
												<font style="vertical-align: inherit;">-tuples的</font>
												<font style="vertical-align: inherit;">行
												</font>
												<font style="vertical-align: inherit;">。</font>
												<font style="vertical-align: inherit;">因此，允许的语法更具体地表示为
												</font>
											</font><code class="literal"><em class="replaceable"><code>expr</code></em> [NOT] IN
												<em class="replaceable"><code>subquery</code></em></code>
											<font style="vertical-align: inherit;"></font><em class="replaceable"><code>expr</code></em>
											<font style="vertical-align: inherit;"></font><em class="replaceable"><code>n</code></em>
											<font style="vertical-align: inherit;"></font><em class="replaceable"><code>n</code></em>
											<font style="vertical-align: inherit;"></font><code class="literal"><em class="replaceable"><code>row_constructor</code></em>
												[NOT]
												IN <em class="replaceable"><code>table_subquery</code></em></code>
										</p>
									</li>
									<li class="listitem">
										<p>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">
													对于</font>
												<font style="vertical-align: inherit;">，
												</font>
												<font style="vertical-align: inherit;">必须是标量值，子查询必须是列子查询; </font>
												<font style="vertical-align: inherit;">它不能返回多列行。
												</font>
											</font><code class="literal"><em class="replaceable"><code>expr</code></em>
												<em class="replaceable"><code>op</code></em> {ALL|ANY|SOME}
												<em class="replaceable"><code>subquery</code></em></code>
											<font style="vertical-align: inherit;"></font><em class="replaceable"><code>expr</code></em>
											<font style="vertical-align: inherit;"></font>
										</p>
									</li>
								</ul>
							</div>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										换句话说，对于返回</font>
								</font><em class="replaceable"><code>n</code></em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">-tuples </font>
									<font style="vertical-align: inherit;">行的子查询
									</font>
									<font style="vertical-align: inherit;">，这是受支持的：
									</font>
								</font>
							</p>
							<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">（</font></font><em class="replaceable"><code>expr_1</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">，...，</font></font><em class="replaceable"><code>expr_n</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）[NOT] IN</font></font><em class="replaceable"><code>table_subquery</code></em>
</pre>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										但是这不受支持：
									</font>
								</font>
							</p>
							<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">（</font></font><em class="replaceable"><code>expr_1</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">，...，</font></font><em class="replaceable"><code>expr_n</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）</font></font><em class="replaceable"><code>op</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">{ALL | ANY | SOME}</font></font><em class="replaceable"><code>subquery</code></em>
</pre>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										支持行比较</font>
								</font><code class="literal">IN</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">但不支持其他
									</font>
									<font style="vertical-align: inherit;">比较的原因
									</font>
								</font><code class="literal">IN</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">是通过将其重写为一系列</font>
								</font><a class="link" href="functions.html#operator_equal"><code class="literal">=</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										比较和</font>
								</font><a class="link" href="functions.html#operator_and"><code class="literal">AND</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">操作来实现。</font>
									<font style="vertical-align: inherit;">这种方法不能用于</font>
								</font><code class="literal">ALL</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><code class="literal">ANY</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">或</font>
								</font><code class="literal">SOME</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										中子查询</font>
								</font><code class="literal">FROM</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">子句不能是相关子查询。</font>
									<font style="vertical-align: inherit;">它们在查询执行期间实现了整体（计算生成结果集），因此无法对外部查询的每一行进行求值。</font>
									<font style="vertical-align: inherit;">优化器延迟实现直到需要结果，这可以允许实现物化。</font>
									<font style="vertical-align: inherit;">请参见
									</font>
								</font><a class="xref" href="optimization.html#derived-table-optimization" title="8.2.2.4使用合并或实现优化派生表，视图引用和公用表表达式">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第8.2.2.4节“使用合并或实现优化派生表，视图引用和公用表表达式”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										MySQL不支持</font>
								</font><code class="literal">LIMIT</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">某些子查询运算符的子查询：
									</font>
								</font>
							</p>
							<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM t1</code></strong>
       <strong class="userinput"><code>WHERE s1 IN (SELECT s2 FROM t2 ORDER BY s1 LIMIT 1);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ERROR 1235（42000）：此版本的MySQL尚不支持</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 'LIMIT＆IN / ALL / ANY / SOME子查询'</font></font><font></font>
</pre>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										MySQL允许子查询引用存储的函数，该函数具有数据修改副作用，例如将行插入表中。</font>
									<font style="vertical-align: inherit;">例如，如果</font>
								</font><code class="literal">f()</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">插入行，则以下查询可以修改数据：
									</font>
								</font>
							</p>
							<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">SELECT ... WHERE x IN（SELECT f（）...）;
</font></font></pre>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										此行为是SQL标准的扩展。</font>
									<font style="vertical-align: inherit;">在MySQL中，它可以产生不确定的结果，因为
									</font>
								</font><code class="literal">f()</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">对于给定查询的不同执行，可能会执行不同的次数，具体取决于优化程序选择如何处理它。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										对于基于语句或混合格式的复制，这种不确定性的一个含义是这样的查询可以在主服务器及其从服务器上产生不同的结果。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>

			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="view-restrictions"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.5对视图的限制</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<a class="indexterm" name="idm140091496372016"></a><a class="indexterm" name="idm140091496370528"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							视图处理未优化：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										无法在视图上创建索引。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										索引可用于使用合并算法处理的视图。</font>
									<font style="vertical-align: inherit;">但是，使用temptable算法处理的视图无法利用其基础表上的索引（尽管可以在生成临时表期间使用索引）。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							一般原则是您无法修改表并从子查询中的同一表中进行选择。</font>
						<font style="vertical-align: inherit;">请参见
						</font>
					</font><a class="xref" href="restrictions.html#subquery-restrictions" title="C.4子查询的限制">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第C.4节“子查询的限制”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							如果从从表中选择的视图中进行选择，如果视图从子查询中的表中进行选择并且使用合并算法评估视图，则同样的原则也适用。</font>
						<font style="vertical-align: inherit;">例：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建视图v1 AS</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
SELECT * FROM t2 WHERE EXISTS（SELECT 1 FROM t1 WHERE t1.a = t2.a）;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
UPDATE t1，v2 SET t1.a = 1 WHERE t1.b = v2.b;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							如果使用临时表评估视图，则
						</font>
					</font><span class="emphasis"><em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">可以</font>
							</font>
						</em></span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">从视图子查询中的表中进行选择，并仍在外部查询中修改该表。</font>
						<font style="vertical-align: inherit;">在这种情况下，视图将存储在临时表中，因此您实际上并不是从子查询中的表中进行选择并</font>
					</font><span class="quote">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">“</font>
						</font><span class="quote">
							<font style="vertical-align: inherit;"></font>
						</span>
						<font style="vertical-align: inherit;"></font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">同时修改它
						</font><span class="quote">
							<font style="vertical-align: inherit;">” </font>
						</span><span class="quote"><span class="quote">
								<font style="vertical-align: inherit;">。</font>
							</span></span><span class="quote">
							<font style="vertical-align: inherit;">“</font>
						</span>
						<font style="vertical-align: inherit;">（这是您可能希望通过</font>
					</font><code class="literal">ALGORITHM = TEMPTABLE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">在视图定义中</font>
						<font style="vertical-align: inherit;">指定来强制MySQL使用temptable算法的另一个原因
						</font>
						<font style="vertical-align: inherit;">。）
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							您可以使用</font>
					</font><a class="link" href="sql-syntax.html#drop-table" title="13.1.32 DROP TABLE语法"><code class="literal">DROP
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">删除或更改视图定义中使用的表。</font>
						<font style="vertical-align: inherit;">即使这会使视图无效，也</font>
						<font style="vertical-align: inherit;">不会从</font>
					</font><code class="literal">DROP</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">ALTER</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">操作产生</font>
						<font style="vertical-align: inherit;">警告</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">相反，使用视图时会发生错误。</font>
					</font><a class="link" href="sql-syntax.html#check-table" title="13.7.3.2检查表语法"><code class="literal">CHECK
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">可用于检查已经失效的观点</font>
					</font><code class="literal">DROP</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">ALTER</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							操作。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							关于视图可更新性，视图的总体目标是，如果任何视图在理论上是可更新的，那么它在实践中应该是可更新的。</font>
						<font style="vertical-align: inherit;">MySQL尽可能快。</font>
						<font style="vertical-align: inherit;">现在可以更新许多理论上可更新的视图，但仍然存在限制。</font>
						<font style="vertical-align: inherit;">有关详细信息，请参见</font>
					</font><a class="xref" href="stored-objects.html#view-updatability" title="24.5.3可更新和可插入的视图">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第24.5.3节“可更新和可插入视图”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p><a class="indexterm" name="idm140091496352400"></a><a class="indexterm" name="idm140091496350912"></a><a class="indexterm"
				 name="idm140091496349424"></a><a class="indexterm" name="idm140091496347936"></a><a class="indexterm" name="idm140091496346448"></a><a
				 class="indexterm" name="idm140091496344960"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							目前的意见实施存在缺陷。</font>
						<font style="vertical-align: inherit;">如果为用户授予了创建视图所需的基本权限（</font>
					</font><a class="link" href="security.html#priv_create-view"><code class="literal">CREATE VIEW</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><a class="link" href="security.html#priv_select"><code class="literal">SELECT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">权限），则该用户将无法调用</font>
					</font><a class="link" href="sql-syntax.html#show-create-view" title="13.7.6.13 SHOW CREATE VIEW语法"><code class="literal">SHOW
							CREATE VIEW</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							该对象，除非该用户也被授予该
						</font>
					</font><a class="link" href="security.html#priv_show-view"><code class="literal">SHOW VIEW</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">权限。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							这个缺点可能会导致使用</font>
					</font><a class="link" href="programs.html#mysqldump" title="4.5.4 mysqldump  - 数据库备份程序"><span class="command"><strong>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">mysqldump</font>
								</font>
							</strong></span></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">备份数据库时出现问题
						</font>
						<font style="vertical-align: inherit;">，因为权限不足可能会失败。</font>
						<font style="vertical-align: inherit;">Bug＃22062中描述了此问题。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							该问题的解决方法是管理员手动将</font>
					</font><a class="link" href="security.html#priv_show-view"><code class="literal">SHOW VIEW</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">权限</font>
						<font style="vertical-align: inherit;">授予已授予的</font>
						<font style="vertical-align: inherit;">用户</font>
					</font><a class="link" href="security.html#priv_create-view"><code class="literal">CREATE VIEW</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，因为MySQL在创建视图时不会隐式授予它。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							视图没有索引，因此索引提示不适用。</font>
						<font style="vertical-align: inherit;">不允许在从视图中选择时使用索引提示。
						</font>
					</font>
				</p>
				<p>
					<a class="link" href="sql-syntax.html#show-create-view" title="13.7.6.13 SHOW CREATE VIEW语法"><code class="literal">SHOW
							CREATE VIEW</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">使用</font>
						<font style="vertical-align: inherit;">每列</font>
						<font style="vertical-align: inherit;">的</font>
						<font style="vertical-align: inherit;">子句</font>
						<font style="vertical-align: inherit;">显示视图定义</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">如果从表达式创建列，则默认别名是表达式文本，该文本可能很长。</font>
						<font style="vertical-align: inherit;">
							将检查语句中</font>
						<font style="vertical-align: inherit;">列名的别名，</font>
						<font style="vertical-align: inherit;">最大列长度为64个字符（不是最大别名长度为256个字符）。</font>
						<font style="vertical-align: inherit;">因此，</font>
						<font style="vertical-align: inherit;">如果任何列别名超过64个字符</font>
						<font style="vertical-align: inherit;">，则从输出中创建的视图将</font>
						<font style="vertical-align: inherit;">失败。</font>
						<font style="vertical-align: inherit;">对于具有太长别名的视图，这可能会在以下情况下导致问题：
						</font>
					</font><code class="literal">AS
						<em class="replaceable"><code>alias_name</code></em></code>
					<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#create-view" title="13.1.23创建视图语法"><code
						 class="literal">CREATE VIEW</code></a>
					<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#show-create-view" title="13.7.6.13 SHOW CREATE VIEW语法"><code
						 class="literal">SHOW
							CREATE VIEW</code></a>
					<font style="vertical-align: inherit;"></font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										视图定义无法复制到强制执行列长度限制的较新从属。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										使用</font>
								</font><a class="link" href="programs.html#mysqldump" title="4.5.4 mysqldump  - 数据库备份程序"><span class="command"><strong>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">mysqldump</font>
											</font>
										</strong></span></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">创建的转储文件</font>
									<font style="vertical-align: inherit;">无法加载到强制执行列长度限制的服务器中。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							任一问题的解决方法是修改每个有问题的视图定义以使用提供较短列名称的别名。</font>
						<font style="vertical-align: inherit;">然后视图将正确复制，并且可以转储和重新加载而不会导致错误。</font>
						<font style="vertical-align: inherit;">要修改定义，请使用</font>
					</font><a class="link" href="sql-syntax.html#drop-view" title="13.1.35 DROP VIEW语法"><code class="literal">DROP
							VIEW</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和</font>
						<font style="vertical-align: inherit;">删除并再次创建视图</font>
					</font><a class="link" href="sql-syntax.html#create-view" title="13.1.23创建视图语法"><code class="literal">CREATE VIEW</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，或者使用替换定义
						</font>
					</font><a class="link" href="sql-syntax.html#create-view" title="13.1.23创建视图语法"><code class="literal">CREATE OR
							REPLACE
							VIEW</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于在转储文件中重新加载视图定义时出现的问题，另一种解决方法是编辑转储文件以修改其
						</font>
					</font><a class="link" href="sql-syntax.html#create-view" title="13.1.23创建视图语法"><code class="literal">CREATE VIEW</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句。</font>
						<font style="vertical-align: inherit;">但是，这不会更改原始视图定义，这可能会导致后续转储操作出现问题。
						</font>
					</font>
				</p>
			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="xa-restrictions"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.6 XA事务的限制</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<a class="indexterm" name="idm140091496315904"></a><a class="indexterm" name="idm140091496314448"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							XA事务支持仅限于</font>
					</font><code class="literal">InnoDB</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							存储引擎。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于</font>
					</font><span class="quote">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">“ </font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">外部XA</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> ”</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，MySQL服务器充当资源管理器，客户端程序充当事务管理器。</font>
						<font style="vertical-align: inherit;">对于
						</font>
					</font><span class="quote">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">“ </font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">内部XA</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> ”</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，MySQL服务器中的存储引擎充当RM，而服务器本身充当TM。</font>
						<font style="vertical-align: inherit;">内部XA支持受到各个存储引擎功能的限制。</font>
						<font style="vertical-align: inherit;">处理涉及多个存储引擎的XA事务需要内部XA。</font>
						<font style="vertical-align: inherit;">内部XA的实现要求存储引擎支持表处理程序级别的两阶段提交，目前这仅适用于</font>
					</font><code class="literal">InnoDB</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							因为</font>
					</font><a class="link" href="sql-syntax.html#xa-statements" title="13.3.8.1 XA事务SQL语法"><code class="literal">XA
							START</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
						<font style="vertical-align: inherit;">不支持</font>
					</font><code class="literal">JOIN</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><code class="literal">RESUME</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">子句。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							因为</font>
					</font><a class="link" href="sql-syntax.html#xa-statements" title="13.3.8.1 XA事务SQL语法"><code class="literal">XA
							END</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">SUSPEND [FOR MIGRATE]</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">不支持</font>
						<font style="vertical-align: inherit;">该</font>
						<font style="vertical-align: inherit;">条款。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">全局事务中每个XA事务</font>
					</font><em class="replaceable"><code>bqual</code></em>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">的</font>
					</font><em class="replaceable"><code>xid</code></em>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">值</font>
						<font style="vertical-align: inherit;">部分</font>
						<font style="vertical-align: inherit;">不同</font>
						<font style="vertical-align: inherit;">
							的要求</font>
						<font style="vertical-align: inherit;">是当前MySQL XA实现的限制。</font>
						<font style="vertical-align: inherit;">它不是XA规范的一部分。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							XA事务分两部分写入二进制日志。</font>
						<font style="vertical-align: inherit;">当
						</font>
					</font><code class="literal">XA PREPARE </code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">发出后，交易起来的第一部分，以</font>
					</font><code class="literal">XA PREPARE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">使用初始GTID被写入。</font>
						<font style="vertical-align: inherit;">A </font>
					</font><code class="literal">XA_prepare_log_event</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">用于在二进制日志中标识此类事务。</font>
						<font style="vertical-align: inherit;">当</font>
						<font style="vertical-align: inherit;">发布</font>
					</font><code class="literal">XA
						COMMIT</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">XA ROLLBACK</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">发布时，仅包含</font>
					</font><code class="literal">XA
						COMMIT</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">XA ROLLBACK</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">声明</font>
						<font style="vertical-align: inherit;">的事务的第二部分</font>
						<font style="vertical-align: inherit;">是使用第二个GTID编写的。</font>
						<font style="vertical-align: inherit;">请注意，由其标识的事务的初始部分
						</font>
					</font><code class="literal">XA_prepare_log_event</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">不一定是其</font>
					</font><code class="literal">XA COMMIT</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">XA
						ROLLBACK</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，它可能导致任何两个XA事务的交叉二进制日志记录。</font>
						<font style="vertical-align: inherit;">XA事务的两个部分甚至可以出现在不同的二进制日志文件中。</font>
						<font style="vertical-align: inherit;">这意味着一个XA事务</font>
					</font><code class="literal">PREPARED</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">state现在是持久的，直到发出显式</font>
					</font><code class="literal">XA COMMIT</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">XA
						ROLLBACK</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句，确保XA事务与复制兼容。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在复制从属服务器上，在准备好XA事务之后，它立即与从属应用程序线程分离，并且可以由从属服务器上的任何线程提交或回滚。</font>
						<font style="vertical-align: inherit;">这意味着相同的XA事务可以出现在
						</font>
					</font><a class="link" href="performance-schema.html#events-transactions-current-table" title="26.12.7.1 events_transactions_current表"><code
						 class="literal">events_transactions_current</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">表中，在不同的线程上具有不同的状态。</font>
						<font style="vertical-align: inherit;">该
						</font>
					</font><a class="link" href="performance-schema.html#events-transactions-current-table" title="26.12.7.1 events_transactions_current表"><code
						 class="literal">events_transactions_current</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">表显示线程上最近监视的事务事件的当前状态，并且在线程空闲时不更新此状态。</font>
						<font style="vertical-align: inherit;">因此</font>
					</font><code class="literal">PREPARED</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，在由另一个线程处理之后，</font>
						<font style="vertical-align: inherit;">XA事务仍然可以在</font>
						<font style="vertical-align: inherit;">原始应用程序线程</font>
						<font style="vertical-align: inherit;">的</font>
						<font style="vertical-align: inherit;">状态</font>
						<font style="vertical-align: inherit;">下显示</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">要正确识别仍处于</font>
					</font><code class="literal">PREPARED</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">状态且需要恢复的</font>
						<font style="vertical-align: inherit;">XA事务</font>
						<font style="vertical-align: inherit;">，请使用</font>
					</font><a class="link" href="sql-syntax.html#xa-statements" title="13.3.8.1 XA事务SQL语法"><code class="literal">XA
							RECOVER</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;"> 语句而不是Performance Schema事务表。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							使用XA事务存在以下限制：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										XA事务对于二进制日志的意外停止不具有完全的弹性。</font>
									<font style="vertical-align: inherit;">如果有意外的停顿，而服务器是在执行的中间</font>
								</font><code class="literal">XA
									PREPARE</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，</font>
								</font><code class="literal">XA COMMIT</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，</font>
								</font><code class="literal">XA
									ROLLBACK</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，或</font>
								</font><code class="literal">XA COMMIT ... ONE
									PHASE</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">语句时，服务器可能无法恢复到正确的状态，使服务器和二进制日志中的不一致的状态。</font>
									<font style="vertical-align: inherit;">在这种情况下，二进制日志可能包含未应用的额外XA事务，或者错过应用的XA事务。</font>
									<font style="vertical-align: inherit;">此外，如果启用了GTID，则恢复后
									</font>
								</font><code class="literal">@@GLOBAL.GTID_EXECUTED</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">可能无法正确描述已应用的事务。</font>
									<font style="vertical-align: inherit;">请注意，如果在</font>
								</font><code class="literal">XA
									PREPARE</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">之间，之间</font>
									<font style="vertical-align: inherit;">发生意外停止</font>
								</font><code class="literal">XA PREPARE</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
								</font><code class="literal">XA COMMIT</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">（或</font>
								</font><code class="literal">XA
									ROLLBACK</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">），或</font>
								</font><code class="literal">XA COMMIT</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">（或
									</font>
								</font><code class="literal">XA ROLLBACK</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">）之后，服务器和二进制日志被正确恢复并进入一致状态。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										不支持将复制筛选器或二进制日志筛选器与XA事务结合使用。</font>
									<font style="vertical-align: inherit;">过滤表可能导致复制从属设备上的XA事务为空，并且不支持空XA事务。</font>
									<font style="vertical-align: inherit;">此外，通过设置
									</font>
								</font><a class="link" href="replication.html#sysvar_master_info_repository"><code class="literal">master_info_repository=TABLE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										和
									</font>
								</font><a class="link" href="replication.html#sysvar_relay_log_info_repository"><code class="literal">relay_log_info_repository=TABLE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										复制从属设备（它成为MySQL 8.0中的默认设置），数据引擎事务的内部状态在过滤的XA事务之后发生更改，并且可能与复制事务上下文状态不一致。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;"></font><a class="link" href="error-handling.html#error_er_xa_replication_filters"><code
									 class="literal">ER_XA_REPLICATION_FILTERS</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">每当XA事务受复制过滤器影响时，都会记录</font>
									<font style="vertical-align: inherit;">
										该错误
									</font>
									<font style="vertical-align: inherit;">，无论事务是否为空。</font>
									<font style="vertical-align: inherit;">如果事务不为空，则复制从属设备可以继续运行，但您应该采取措施停止使用带有XA事务的复制过滤器以避免潜在问题。</font>
									<font style="vertical-align: inherit;">如果事务为空，则复制从站停止。</font>
									<font style="vertical-align: inherit;">在那种情况下，复制从站可能处于未确定状态，其中复制过程的一致性可能会受到影响。</font>
									<font style="vertical-align: inherit;">特别是</font>
								</font><code class="literal">gtid_executed</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">设置在从站的从站可能与主站上的设备不一致。</font>
									<font style="vertical-align: inherit;">要解决此问题，请隔离主服务器并停止所有复制，然后检查复制拓扑中的GTID一致性。</font>
									<font style="vertical-align: inherit;">撤消生成错误消息的XA事务，然后重新启动复制。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										对于基于语句的复制，XA事务被认为是不安全的。</font>
									<font style="vertical-align: inherit;">如果正在主服务器上以并行顺序准备两个并行提交的XA事务，则可能会发生无法安全解析的锁定依赖关系，并且复制可能会因从服务器上的死锁而失败。</font>
									<font style="vertical-align: inherit;">单线程或多线程复制从站可能会出现这种情况。</font>
									<font style="vertical-align: inherit;">当
									</font>
								</font><a class="link" href="replication.html#sysvar_binlog_format"><code class="literal">binlog_format=STATEMENT</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">设置，则会发出警告XA事务的内部DML语句。</font>
									<font style="vertical-align: inherit;">当
									</font>
								</font><a class="link" href="replication.html#sysvar_binlog_format"><code class="literal">binlog_format=MIXED</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">或
									</font>
								</font><a class="link" href="replication.html#sysvar_binlog_format"><code class="literal">binlog_format=ROW</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">设置，XA事务内的DML语句使用基于行的复制记录，以及潜在的问题是不存在的。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
					<div class="admon-title">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								注意
							</font>
						</font>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在MySQL 5.7.7之前，XA事务根本不兼容复制。</font>
							<font style="vertical-align: inherit;">这是因为处于</font>
						</font><code class="literal">PREPARED</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">状态</font>
							<font style="vertical-align: inherit;">的XA事务</font>
							<font style="vertical-align: inherit;">将在干净的服务器关闭或客户端断开时回滚。</font>
							<font style="vertical-align: inherit;">类似地，处于</font>
						</font><code class="literal">PREPARED</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">状态</font>
							<font style="vertical-align: inherit;">的XA事务</font>
							<font style="vertical-align: inherit;">仍然存在</font>
						</font><code class="literal">PREPARED</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">状态，以防服务器异常关闭然后再次启动，但事务的内容无法写入二进制日志。</font>
							<font style="vertical-align: inherit;">在这两种情况下，都无法正确复制XA事务。
							</font>
						</font>
					</p>
				</div>

			</div>

			<div class="section">

				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="charset-restrictions"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.7字符集的限制</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<a class="indexterm" name="idm140091496256976"></a><a class="indexterm" name="idm140091496255520"></a>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										标识符使用存储在</font>
								</font><code class="literal">mysql</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">数据库表（</font>
								</font><code class="literal">user</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，</font>
								</font><code class="literal">db</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">等）中</font>
								</font><code class="literal">utf8</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，但标识符只能包含基本多语言平面（BMP）中的字符。</font>
									<font style="vertical-align: inherit;">标识符中不允许使用补充字符。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										在</font>
								</font><code class="literal">ucs2</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，</font>
								</font><code class="literal">utf16</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><code class="literal">utf16le</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，和</font>
								</font><code class="literal">utf32</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										字符集有以下限制：
									</font>
								</font>
							</p>
							<div class="itemizedlist">
								<ul class="itemizedlist" style="list-style-type: circle; ">
									<li class="listitem">
										<p>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">
													它们都不能用作客户端字符集。</font>
												<font style="vertical-align: inherit;">请参见
												</font>
											</font><a class="xref" href="charset.html#charset-connection-impermissible-client-charset" title="不允许的客户端字符集">
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">不允许的客户端字符集</font>
												</font>
											</a>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">。
												</font>
											</font>
										</p>
									</li>
									<li class="listitem">
										<p>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">
													目前无法使用
												</font>
											</font><a class="link" href="sql-syntax.html#load-data" title="13.2.7 LOAD DATA语法"><code class="literal">LOAD
													DATA</code></a>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">加载使用这些字符集的数据文件。
												</font>
											</font>
										</p>
									</li>
									<li class="listitem">
										<p>
											<code class="literal">FULLTEXT</code>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">无法在使用任何这些字符集的列上创建索引。</font>
												<font style="vertical-align: inherit;">但是，您可以</font>
											</font><code class="literal">IN BOOLEAN MODE</code>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">在没有索引的情况下对列</font>
												<font style="vertical-align: inherit;">执行</font>
												<font style="vertical-align: inherit;">搜索。
												</font>
											</font>
										</p>
									</li>
								</ul>
							</div>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										该</font>
								</font><a class="link" href="functions.html#operator_regexp"><code class="literal">REGEXP</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
								</font><a class="link" href="functions.html#operator_regexp"><code class="literal">RLIKE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										在逐个字节的方式运营工作，所以他们没有多字节安全，可能产生与多字节字符集意想不到的效果。</font>
									<font style="vertical-align: inherit;">此外，这些运算符通过字节值比较字符，并且即使给定的排序规则将重音字符视为相等，重音字符也可能无法比较。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>

			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="performance-schema-restrictions"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.8性能模式的限制</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<a class="indexterm" name="idm140091496234736"></a><a class="indexterm" name="idm140091496233232"></a><a class="indexterm"
				 name="idm140091496231728"></a><a class="indexterm" name="idm140091496230224"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							性能模式避免使用互斥锁来收集或生成数据，因此无法保证一致性，结果有时可能不正确。</font>
					</font><code class="literal">performance_schema</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">表中的</font>
						<font style="vertical-align: inherit;">事件值
						</font>
						<font style="vertical-align: inherit;">是不确定的且不可重复的。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							如果将事件信息保存在另一个表中，则不应假设原始事件以后仍可用。</font>
						<font style="vertical-align: inherit;">例如，如果您从</font>
					</font><code class="literal">performance_schema</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">表中</font>
						<font style="vertical-align: inherit;">选择事件
						</font>
						<font style="vertical-align: inherit;">到临时表，并打算稍后将该表与原始表连接，则可能没有匹配项。
						</font>
					</font>
				</p>
				<p>
					<a class="link" href="programs.html#mysqldump" title="4.5.4 mysqldump  - 数据库备份程序"><span class="command"><strong>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">mysqldump</font>
								</font>
							</strong></span></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">并</font>
					</font><code class="literal">BACKUP
						DATABASE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">忽略</font>
					</font><code class="literal">performance_schema</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">数据库中的</font>
						<font style="vertical-align: inherit;">表
						</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在表</font>
					</font><code class="literal">performance_schema</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">的数据库不能被锁定</font>
					</font><code class="literal">LOCK TABLES</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，除了
						</font>
						<font style="vertical-align: inherit;">表。
						</font>
					</font><code class="literal">setup_<em class="replaceable"><code>xxx</code></em></code>
					<font style="vertical-align: inherit;"></font>
				</p>
				<p>
					<font style="vertical-align: inherit;"></font><code class="literal">performance_schema</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">无法索引数据库中的</font>
						<font style="vertical-align: inherit;">
							表</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;"></font><code class="literal">performance_schema</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">不复制数据库中的</font>
						<font style="vertical-align: inherit;">
							表</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							计时器的类型可能因平台而异。</font>
						<font style="vertical-align: inherit;">该
						</font>
					</font><a class="link" href="performance-schema.html#performance-timers-table" title="26.12.17.4 performance_timers表"><code
						 class="literal">performance_timers</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">表显示了可用的事件计时器。</font>
						<font style="vertical-align: inherit;">如果此表中给定计时器名称的值为，</font>
					</font><code class="literal">NULL</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">则您的平台不支持该计时器。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							适用于存储引擎的仪器可能未针对所有存储引擎实施。</font>
						<font style="vertical-align: inherit;">每个第三方引擎的仪表是引擎维护者的责任。
						</font>
					</font>
				</p>
			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="pluggable-authentication-restrictions"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.9可插拔认证的限制</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<a class="indexterm" name="idm140091496213216"></a><a class="indexterm" name="idm140091496211760"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							本节的第一部分描述了</font>
					</font><a class="xref" href="security.html#pluggable-authentication" title="6.2.17可插拔认证">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第6.2.17节“可插入身份验证”中</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">描述的可插入身份验证框架的适用性的一般限制</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">第二部分描述了第三方连接器开发人员如何确定连接器可以利用可插入身份验证功能的程度以及采取哪些步骤以使其更加合规。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">这里使用</font>
						<font style="vertical-align: inherit;">
							的术语</font>
					</font><span class="quote">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">“ </font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">本机认证</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> ”</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">是指对存储在</font>
					</font><code class="literal">mysql.user</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">系统表</font>
						<font style="vertical-align: inherit;">中的密码的认证
						</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">在实现可插入身份验证之前，这与旧MySQL服务器提供的身份验证方法相同。</font>
					</font><span class="quote">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">“ </font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">Windows本机身份验证</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> ”</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">是指使用已登录到Windows的用户的凭据进行身份验证，由Windows Native Authentication插件（简称</font>
					</font><span class="quote">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">“ </font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">Windows插件</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> ”</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">）实现。
						</font>
					</font>
				</p>
				<h3><a name="idm140091496205904"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">一般可插入的身份验证限制</font>
					</font>
				</h3>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<span class="bold"><strong>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">Connector / C，Connector / C ++：</font>
										</font>
									</strong></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										使用这些连接器的客户端只能通过使用本机身份验证的帐户连接到服务器。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										例外：连接器支持可插入身份验证，如果它是为了</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										动态（而不是静态）</font>
									<font style="vertical-align: inherit;">链接</font>
									<font style="vertical-align: inherit;">而</font>
									<font style="vertical-align: inherit;">构建的，</font>
									<font style="vertical-align: inherit;">并且</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">如果安装了该版本</font>
									<font style="vertical-align: inherit;">，则加载当前版本</font>
									<font style="vertical-align: inherit;">，或者连接器是从源重新编译为链接当前版本</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										有关编写连接器以从服务器处理有关默认服务器端身份验证插件的信息的信息，请参阅
									</font>
								</font><a class="xref" href="security.html#pluggable-authentication-connector-writing" title="身份验证插件连接器 - 编写注意事项">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">身份验证插件连接器 - 编写注意事项</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<span class="bold"><strong>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">Connector / NET：</font>
										</font>
									</strong></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">使用Connector / NET的客户端可以通过使用本机身份验证或Windows本机身份验证的帐户连接到服务器。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<span class="bold"><strong>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">Connector / PHP：</font>
										</font>
									</strong></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">使用此连接器的客户端只能通过使用本机身份验证的帐户连接到服务器，当使用PHP本机驱动程序进行编译时（</font>
								</font><code class="literal">mysqlnd</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">）。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<span class="bold"><strong>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">Windows本机身份验证：</font>
										</font>
									</strong></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">通过使用Windows插件的帐户进行连接需要Windows域设置。</font>
									<font style="vertical-align: inherit;">没有它，使用NTLM身份验证，然后只能进行本地连接; </font>
									<font style="vertical-align: inherit;">也就是说，客户端和服务器必须在同一台计算机上运行。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<span class="bold"><strong>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">代理用户：</font>
										</font>
									</strong></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">代理用户支持是可用的，客户端可以通过使用实现代理用户功能的插件进行身份验证的帐户进行连接（即，可以返回与连接用户的用户名不同的用户名的插件）。</font>
									<font style="vertical-align: inherit;">例如，PAM和Windows插件支持代理用户。</font>
									<font style="vertical-align: inherit;">该
									</font>
								</font><code class="literal">mysql_native_password</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
								</font><code class="literal">sha256_password</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">认证插件默认情况下不支持代理的用户，但可以被配置成这样; </font>
									<font style="vertical-align: inherit;">请参阅</font>
								</font><a class="xref" href="security.html#proxy-users-server-user-mapping" title="服务器支持代理用户映射">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">代理用户映射的服务器支持</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<span class="bold"><strong>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">复制</font>
										</font>
									</strong></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">：复制从属服务器不仅可以使用使用本机身份验证的主帐户，还可以通过使用非本地身份验证的主帐户进行连接（如果所需的客户端插件可用）。</font>
									<font style="vertical-align: inherit;">如果插件是内置的
									</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，则默认情况下可用。</font>
									<font style="vertical-align: inherit;">否则，插件必须安装在从属</font>
								</font><a class="link" href="server-administration.html#sysvar_plugin_dir"><code class="literal">plugin_dir</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">系统变量</font>
									<font style="vertical-align: inherit;">指定的目录中的从属端
									</font>
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<span class="bold"><strong><a class="link" href="storage-engines.html#federated-storage-engine" title="16.8 FEDERATED存储引擎"><code
											 class="literal">FEDERATED</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												表：</font>
										</font>
									</strong></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">一个</font>
								</font><a class="link" href="storage-engines.html#federated-storage-engine" title="16.8 FEDERATED存储引擎"><code
									 class="literal">FEDERATED</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										表只能通过使用本地身份验证的远程服务器上的账户访问远程表。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<h3><a name="idm140091496181136"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">可插拔身份验证和第三方连接器</font>
					</font>
				</h3>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							第三方连接器开发人员可以使用以下准则来确定连接器是否已准备好利用可插入身份验证功能以及要采取哪些步骤以使其更加合规：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										未进行任何更改的现有连接器使用本机身份验证，使用连接器的客户端只能通过使用本机身份验证的帐户连接到服务器。</font>
								</font><span class="emphasis"><em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">但是，您应该针对最新版本的服务器测试连接器，以验证此类连接是否仍然可以正常工作。</font>
										</font>
									</em></span>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										例外：如果连接器可以</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">动态（而非静态）</font>
									<font style="vertical-align: inherit;">链接，</font>
									<font style="vertical-align: inherit;">并且加载当前版本（</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">如果已安装该版本</font>
									<font style="vertical-align: inherit;">），则
									</font>
									<font style="vertical-align: inherit;">连接器可以使用可插入身份验证而不进行任何更改
									</font>
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										要利用可插入的身份验证功能，</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">应该根据当前版本重新链接基于
									</font>
									<font style="vertical-align: inherit;">连接器的连接器</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">这使连接器能够通过现在需要内置客户端插件的帐​​户支持连接
									</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">（例如PAM身份验证所需的明文插件和Windows本机身份验证所需的Windows插件）。</font>
									<font style="vertical-align: inherit;">与当前链接</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">还使连接器能够访问安装在默认MySQL插件目录中的客户端插件（通常是由本地服务器的</font>
								</font><a class="link" href="server-administration.html#sysvar_plugin_dir"><code class="literal">plugin_dir</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">系统变量</font>
									<font style="vertical-align: inherit;">的默认值命名的目录
									</font>
									<font style="vertical-align: inherit;">）。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										如果连接器</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										动态</font>
									<font style="vertical-align: inherit;">链接</font>
									<font style="vertical-align: inherit;">，则必须确保</font>
								</font><code class="literal">libmysqlclient</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">在客户端主机上安装</font>
									<font style="vertical-align: inherit;">较新版本，
									</font>
									<font style="vertical-align: inherit;">并且连接器在运行时加载它。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										连接器支持给定身份验证方法的另一种方法是直接在客户端/服务器协议中实现它。</font>
									<font style="vertical-align: inherit;">Connector / NET使用此方法为Windows本机身份验证提供支持。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										如果连接器应该能够从与默认插件目录不同的目录加载客户端插件，则必须为客户端用户实现一些指定目录的方法。</font>
									<font style="vertical-align: inherit;">这种可能性包括命令行选项或环境变量，连接器可以从中获取目录名称。</font>
									<font style="vertical-align: inherit;">标准MySQL客户端程序（如</font>
								</font><a class="link" href="programs.html#mysql" title="4.5.1 mysql  -  MySQL命令行客户端"><span class="command"><strong>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">mysql</font>
											</font>
										</strong></span></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和</font>
								</font><a class="link" href="programs.html#mysqladmin" title="4.5.2 mysqladmin  - 管理MySQL服务器的客户端"><span class="command"><strong>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">mysqladmin）</font>
											</font>
										</strong></span></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										实现了一个</font>
								</font><code class="option">--plugin-dir</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">选项。</font>
									<font style="vertical-align: inherit;">另请参见
									</font>
								</font><a class="xref" href="connectors-apis.html#c-api-plugin-functions" title="28.7.17 C API客户端插件函数">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第28.7.17节“C API客户端插件函数”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										如本节前面所述，连接器的代理用户支持取决于它支持的身份验证方法是否允许代理用户。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>

			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="limits"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">C.10 MySQL中的限制</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<div class="toc">
					<dl class="toc"><dt><span class="section"><a href="restrictions.html#joins-limits">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">C.10.1连接限制</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="restrictions.html#database-count-limit">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">C.10.2数据库和表的数量限制</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="restrictions.html#table-size-limit">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">C.10.3桌面尺寸限制</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="restrictions.html#column-count-limit">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">C.10.4表列数和行大小的限制</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="restrictions.html#limits-windows">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">C.10.5 Windows平台限制</font>
									</font>
								</a></span></dt></dl>
				</div>
				<a class="indexterm" name="idm140091496160096"></a><a class="indexterm" name="idm140091496158608"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							本节列出了MySQL 8.0中的当前限制。
						</font>
					</font>
				</p>
				<div class="section">

					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="joins-limits"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">C.10.1连接限制</font>
									</font>
								</h3>
							</div>
						</div>
					</div>
					<a class="indexterm" name="idm140091496155552"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								单个连接中可引用的最大表数为61.这包括通过将</font>
						</font><code class="literal">FROM</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子句</font>
							<font style="vertical-align: inherit;">中的派生表和视图合并</font>
							<font style="vertical-align: inherit;">到外部查询块中来处理的连接（请参见
							</font>
						</font><a class="xref" href="optimization.html#derived-table-optimization" title="8.2.2.4使用合并或实现优化派生表，视图引用和公用表表达式">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第8.2.2.4节“优化派生表，视图引用，和合并或实现的公用表表达式“</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">）。</font>
							<font style="vertical-align: inherit;">它还适用于可在视图定义中引用的表的数量。
							</font>
						</font>
					</p>
				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="database-count-limit"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">C.10.2数据库和表的数量限制</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091496150640"></a><a class="indexterm" name="idm140091496149168"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								MySQL对数据库的数量没有限制。</font>
							<font style="vertical-align: inherit;">底层文件系统可能对目录数量有限制。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								MySQL对表的数量没有限制。</font>
							<font style="vertical-align: inherit;">底层文件系统可能对表示表的文件数量有限制。</font>
							<font style="vertical-align: inherit;">单个存储引擎可能会施加特定于引擎的约束。</font>
						</font><code class="literal">InnoDB</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">允许多达40亿张桌子。
							</font>
						</font>
					</p>
				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="table-size-limit"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">C.10.3桌面尺寸限制</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091496144496"></a><a class="indexterm" name="idm140091496143008"></a><a class="indexterm"
					 name="idm140091496141520"></a><a class="indexterm" name="idm140091496140448"></a><a class="indexterm" name="idm140091496138960"></a><a
					 class="indexterm" name="idm140091496137472"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								MySQL数据库的有效最大表大小通常由操作系统对文件大小的约束决定，而不是由MySQL内部限制决定。</font>
							<font style="vertical-align: inherit;">有关操作系统文件大小限制的最新信息，请参阅特定于您的操作系统的文档。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								Windows用户请注意，FAT和VFAT（FAT32）
							</font>
						</font><span class="emphasis"><em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">不</font>
								</font>
							</em></span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">适合与MySQL一起使用。</font>
							<font style="vertical-align: inherit;">请改用NTFS。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果遇到全表错误，可能会发生以下几种原因：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											磁盘可能已满。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您正在使用</font>
									</font><code class="literal">InnoDB</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表并且在</font>
									</font><code class="literal">InnoDB</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表空间文件</font>
										<font style="vertical-align: inherit;">中用</font>
										<font style="vertical-align: inherit;">完了</font>
										<font style="vertical-align: inherit;">空间。</font>
										<font style="vertical-align: inherit;">最大表空间大小也是表的最大大小。</font>
										<font style="vertical-align: inherit;">有关表空间大小限制，请参见
										</font>
									</font><a class="xref" href="innodb-storage-engine.html#innodb-restrictions" title="15.6.1.6 InnoDB表的限制">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">第15.6.1.6节“InnoDB表的限制”</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											通常，对于大小超过1TB的表，建议将表分区为多个表空间文件。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您已达到操作系统文件大小限制。</font>
										<font style="vertical-align: inherit;">例如，您</font>
									</font><code class="literal">MyISAM</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">在操作系统上</font>
										<font style="vertical-align: inherit;">使用</font>
										<font style="vertical-align: inherit;">表，该表支持最大2GB的文件，并且您已达到数据文件或索引文件的此限制。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您正在使用</font>
									</font><code class="literal">MyISAM</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表，并且表所需的空间超出了内部指针大小所允许的范围。</font>
									</font><code class="literal">MyISAM</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">允许数据和索引文件默认增长到256TB，但此限制可以更改为最大允许大小65,536TB（256 </font>
									</font><sup>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">7</font>
										</font>
									</sup>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;"> - 1字节）。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											如果您需要一个</font>
									</font><code class="literal">MyISAM</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">大于默认限制</font>
										<font style="vertical-align: inherit;">的</font>
										<font style="vertical-align: inherit;">表，并且您的操作系统支持大文件，则该</font>
									</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
											TABLE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											语句支持</font>
									</font><code class="literal">AVG_ROW_LENGTH</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">和
										</font>
									</font><code class="literal">MAX_ROWS</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">选项。</font>
										<font style="vertical-align: inherit;">请参见
										</font>
									</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">第13.1.20节“CREATE TABLE语法”</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。</font>
										<font style="vertical-align: inherit;">服务器使用这些选项来确定允许的表的大小。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											如果指针大小对于现有表来说太小，则可以更改选项</font>
									</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
											TABLE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">以增加表的最大允许大小。</font>
										<font style="vertical-align: inherit;">请参见</font>
									</font><a class="xref" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">第13.1.9节“ALTER TABLE语法”</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE </font></font><em class="replaceable"><code>tbl_name</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MAX_ROWS = 1000000000 AVG_ROW_LENGTH = </font></font><em class="replaceable"><code>nnn</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">;
</font></font></pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您</font>
									</font><code class="literal">AVG_ROW_LENGTH</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">只需为带有</font>
									</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">BLOB</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">或
										</font>
									</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">TEXT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">列的</font>
										<font style="vertical-align: inherit;">表</font>
										<font style="vertical-align: inherit;">指定</font>
										<font style="vertical-align: inherit;">; </font>
										<font style="vertical-align: inherit;">在这种情况下，MySQL无法仅根据行数优化所需的空间。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											要更改</font>
									</font><code class="literal">MyISAM</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表</font>
										<font style="vertical-align: inherit;">的默认大小限制
										</font>
										<font style="vertical-align: inherit;">，请设置
										</font>
									</font><a class="link" href="server-administration.html#sysvar_myisam_data_pointer_size"><code class="literal">myisam_data_pointer_size</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，设置用于内部行指针的字节数。</font>
										<font style="vertical-align: inherit;">如果未指定</font>
									</font><code class="literal">MAX_ROWS</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											选项，</font>
										<font style="vertical-align: inherit;">则该值用于设置新表的指针大小</font>
										<font style="vertical-align: inherit;">。</font>
										<font style="vertical-align: inherit;">值
										</font>
									</font><a class="link" href="server-administration.html#sysvar_myisam_data_pointer_size"><code class="literal">myisam_data_pointer_size</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											可以是2到7.值4允许表格高达4GB; </font>
										<font style="vertical-align: inherit;">值为6允许表格高达256TB。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您可以使用以下语句检查最大数据和索引大小：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">从表格中显示表状态</font></font><em class="replaceable"><code>db_name</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">' </font></font><em class="replaceable"><code>tbl_name</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">';
</font></font></pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您还可以使用</font>
									</font><a class="link" href="programs.html#myisamchk" title="4.6.4 myisamchk  -  MyISAM表维护实用程序"><span class="command"><strong>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">myisamchk -dv / path / to / table-index-file</font>
												</font>
											</strong></span></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。</font>
										<font style="vertical-align: inherit;">请参见
										</font>
									</font><a class="xref" href="sql-syntax.html#show" title="13.7.6 SHOW语法">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">第13.7.6节“显示语法”</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">或</font>
									</font><a class="xref" href="programs.html#myisamchk" title="4.6.4 myisamchk  -  MyISAM表维护实用程序">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">第4.6.4节“ </font>
										</font><span class="command"><strong>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">myisamchk</font>
												</font>
											</strong></span>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;"> - MyISAM表维护实用程序”</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											解决</font>
									</font><code class="literal">MyISAM</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表的</font>
										<font style="vertical-align: inherit;">文件大小限制的其他方法
										</font>
										<font style="vertical-align: inherit;">如下：
										</font>
									</font>
								</p>
								<div class="itemizedlist">
									<ul class="itemizedlist" style="list-style-type: circle; ">
										<li class="listitem">
											<p>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">
														如果您的大表是只读的，则可以使用
													</font>
												</font><a class="link" href="programs.html#myisampack" title="4.6.6 myisampack  - 生成压缩的只读MyISAM表"><span
													 class="command"><strong>
															<font style="vertical-align: inherit;">
																<font style="vertical-align: inherit;">myisampack对其</font>
															</font>
														</strong></span></a>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">进行压缩。
													</font>
												</font><a class="link" href="programs.html#myisampack" title="4.6.6 myisampack  - 生成压缩的只读MyISAM表"><span
													 class="command"><strong>
															<font style="vertical-align: inherit;">
																<font style="vertical-align: inherit;">myisampack</font>
															</font>
														</strong></span></a>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">通常会将表格压缩至少50％，因此您实际上可以拥有更大的表格。</font>
												</font><a class="link" href="programs.html#myisampack" title="4.6.6 myisampack  - 生成压缩的只读MyISAM表"><span
													 class="command"><strong>
															<font style="vertical-align: inherit;">
																<font style="vertical-align: inherit;">myisampack</font>
															</font>
														</strong></span></a>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">还可以将多个表合并到一个表中。</font>
													<font style="vertical-align: inherit;">请参见
													</font>
												</font><a class="xref" href="programs.html#myisampack" title="4.6.6 myisampack  - 生成压缩的只读MyISAM表">
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">第4.6.6节“ </font>
													</font><span class="command"><strong>
															<font style="vertical-align: inherit;">
																<font style="vertical-align: inherit;">myisampack</font>
															</font>
														</strong></span>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;"> - 生成压缩，只读MyISAM表”</font>
													</font>
												</a>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">。
													</font>
												</font>
											</p>
										</li>
										<li class="listitem">
											<p>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">
														MySQL包含一个</font>
												</font><code class="literal">MERGE</code>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">库，使您可以处理</font>
												</font><code class="literal">MyISAM</code>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">与单个</font>
												</font><code class="literal">MERGE</code>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">表</font>
													<font style="vertical-align: inherit;">具有相同结构</font>
													<font style="vertical-align: inherit;">的</font>
													<font style="vertical-align: inherit;">表</font>
													<font style="vertical-align: inherit;">集合
													</font>
													<font style="vertical-align: inherit;">。</font>
													<font style="vertical-align: inherit;">请参见</font>
												</font><a class="xref" href="storage-engines.html#merge-storage-engine" title="16.7 MERGE存储引擎">
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">第16.7节“MERGE存储引擎”</font>
													</font>
												</a>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">。
													</font>
												</font>
											</p>
										</li>
									</ul>
								</div>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您正在使用</font>
									</font><code class="literal">MEMORY</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											（</font>
									</font><code class="literal">HEAP</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">）存储引擎; </font>
										<font style="vertical-align: inherit;">在这种情况下，您需要增加</font>
									</font><a class="link" href="server-administration.html#sysvar_max_heap_table_size"><code class="literal">max_heap_table_size</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">系统变量</font>
										<font style="vertical-align: inherit;">的值
										</font>
										<font style="vertical-align: inherit;">。</font>
										<font style="vertical-align: inherit;">请参见</font>
									</font><a class="xref" href="server-administration.html#server-system-variables" title="5.1.8服务器系统变量">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">第5.1.8节“服务器系统变量”</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
						</ul>
					</div>

				</div>

				<div class="section">

					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="column-count-limit"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">C.10.4表列数和行大小的限制</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091496084960"></a><a class="indexterm" name="idm140091496083488"></a><a class="indexterm"
					 name="idm140091496082000"></a><a class="indexterm" name="idm140091496080512"></a>
					<div class="simplesect">

						<div class="titlepage">
							<div>

								<div class="simple">
									<h4 class="title"><a name="column-count-limits"></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">列数限制</font>
										</font>
									</h4>

								</div>

							</div>

						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									MySQL每个表的硬限制为4096列，但对于给定的表，有效最大值可能更小。</font>
								<font style="vertical-align: inherit;">确切的列限制取决于几个因素：
								</font>
							</font>
						</p>
						<div class="itemizedlist">
							<ul class="itemizedlist" style="list-style-type: disc; ">
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												表的最大行大小限制列的数量（可能是大小），因为所有列的总长度不能超过此大小。</font>
											<font style="vertical-align: inherit;">请参阅
											</font>
										</font><a class="xref" href="restrictions.html#row-size-limits" title="行大小限制">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">行大小限制</font>
											</font>
										</a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。
											</font>
										</font>
									</p>
								</li>
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												各列的存储要求限制了适合给定最大行大小的列数。</font>
											<font style="vertical-align: inherit;">某些数据类型的存储要求取决于存储引擎，存储格式和字符集等因素。</font>
											<font style="vertical-align: inherit;">请参见</font>
										</font><a class="xref" href="data-types.html#storage-requirements" title="11.8数据类型存储要求">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">第11.8节“数据类型存储要求”</font>
											</font>
										</a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。
											</font>
										</font>
									</p>
								</li>
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												存储引擎可能会施加额外的限制来限制表列数。</font>
											<font style="vertical-align: inherit;">例如，
											</font>
										</font><a class="link" href="innodb-storage-engine.html" title="第15章InnoDB存储引擎"><code class="literal">InnoDB</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">每个表的限制为1017列。</font>
											<font style="vertical-align: inherit;">请参见
											</font>
										</font><a class="xref" href="innodb-storage-engine.html#innodb-restrictions" title="15.6.1.6 InnoDB表的限制">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">第15.6.1.6节“InnoDB表的限制”</font>
											</font>
										</a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。</font>
											<font style="vertical-align: inherit;">有关其他存储引擎的信息，请参阅
											</font>
										</font><a class="xref" href="storage-engines.html" title="第16章备用存储引擎">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">第16章，</font>
											</font><i>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">备用存储引擎</font>
												</font>
											</i>
										</a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。
											</font>
										</font>
									</p>
								</li>
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												功能关键部分（请参见</font>
										</font><a class="xref" href="sql-syntax.html#create-index" title="13.1.15 CREATE INDEX语法">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">第13.1.15节“CREATE INDEX语法”</font>
											</font>
										</a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">）实现为隐藏的虚拟生成存储列，因此表索引中的每个功能键部分都会计入表总列限制。
											</font>
										</font>
									</p>
								</li>
							</ul>
						</div>

					</div>
					<div class="simplesect">
						<div class="titlepage">
							<div>
								<div class="simple">
									<h4 class="title"><a name="row-size-limits"></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">行大小限制</font>
										</font>
									</h4>

								</div>

							</div>

						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									给定表的最大行大小由以下几个因素决定：
								</font>
							</font>
						</p>
						<div class="itemizedlist">
							<ul class="itemizedlist" style="list-style-type: disc; ">
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												即使存储引擎能够支持更大的行，MySQL表的内部表示的最大行大小限制为65,535字节。
											</font>
										</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">BLOB</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">和
											</font>
										</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">TEXT</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">列只对行大小限制贡献9到12个字节，因为它们的内容与行的其余部分分开存储。
											</font>
										</font>
									</p>
								</li>
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;"></font><code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												对于4KB，8KB，16KB和32KB </font>
										</font><a class="link" href="innodb-storage-engine.html#sysvar_innodb_page_size"><code class="literal">innodb_page_size</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												设置</font>
											<font style="vertical-align: inherit;">，表</font>
											<font style="vertical-align: inherit;">
												的最大行大小（</font>
											<font style="vertical-align: inherit;">适用于本地存储在数据库页面中的数据）略小于半页
											</font>
											<font style="vertical-align: inherit;">。</font>
											<font style="vertical-align: inherit;">例如，对于默认的16KB </font>
										</font><code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">页面大小</font>
											<font style="vertical-align: inherit;">，最大行大小略小于8KB
											</font>
											<font style="vertical-align: inherit;">。</font>
											<font style="vertical-align: inherit;">对于64KB页面，最大行大小略小于16KB。</font>
											<font style="vertical-align: inherit;">请参见
											</font>
										</font><a class="xref" href="innodb-storage-engine.html#innodb-restrictions" title="15.6.1.6 InnoDB表的限制">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">第15.6.1.6节“InnoDB表的限制”</font>
											</font>
										</a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。
											</font>
										</font>
									</p>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												如果包含
											</font>
										</font><a class="link" href="glossary.html#glos_variable_length_type" title="变长型">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">可变长度列</font>
											</font>
										</a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">的</font>
										</font><code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												行</font>
											<font style="vertical-align: inherit;">超过</font>
											<font style="vertical-align: inherit;">最大行大小，请</font>
										</font><code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">选择可变长度列以进行外部页外存储，直到该行符合</font>
										</font><code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												行大小限制。</font>
											<font style="vertical-align: inherit;">本地存储的在页外存储的可变长度列的数据量因行格式而异。</font>
											<font style="vertical-align: inherit;">有关更多信息，请参见
											</font>
										</font><a class="xref" href="innodb-storage-engine.html#innodb-row-format" title="15.10 InnoDB行格式">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">第15.10节“InnoDB行格式”</font>
											</font>
										</a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。
											</font>
										</font>
									</p>
								</li>
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												不同的存储格式使用不同数量的页眉和尾部数据，这会影响行的可用存储量。
											</font>
										</font>
									</p>
									<div class="itemizedlist">
										<ul class="itemizedlist" style="list-style-type: circle; ">
											<li class="listitem">
												<p>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">
															有关</font>
													</font><code class="literal">InnoDB</code>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">行格式的</font>
														<font style="vertical-align: inherit;">信息</font>
														<font style="vertical-align: inherit;">，请参见</font>
													</font><a class="xref" href="innodb-storage-engine.html#innodb-row-format" title="15.10 InnoDB行格式">
														<font style="vertical-align: inherit;">
															<font style="vertical-align: inherit;">第15.10节“InnoDB行格式”</font>
														</font>
													</a>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">。
														</font>
													</font>
												</p>
											</li>
											<li class="listitem">
												<p>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">
															有关</font>
													</font><code class="literal">MyISAM</code>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">
															存储格式的</font>
														<font style="vertical-align: inherit;">信息</font>
														<font style="vertical-align: inherit;">，请参见
														</font>
													</font><a class="xref" href="storage-engines.html#myisam-table-formats" title="16.2.3 MyISAM表存储格式">
														<font style="vertical-align: inherit;">
															<font style="vertical-align: inherit;">第16.2.3节“MyISAM表存储格式”</font>
														</font>
													</a>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">。
														</font>
													</font>
												</p>
											</li>
										</ul>
									</div>
								</li>
							</ul>
						</div>
						<h5><a name="idm140091496047360"></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">行大小限制示例</font>
							</font>
						</h5>
						<div class="itemizedlist">
							<ul class="itemizedlist" style="list-style-type: disc; ">
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												以下</font>
										</font><code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												和</font>
										</font><code class="literal">MyISAM</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">示例</font>
											<font style="vertical-align: inherit;">演示了MySQL最大行大小限制为65,535字节</font>
											<font style="vertical-align: inherit;">。</font>
											<font style="vertical-align: inherit;">无论存储引擎如何，都会强制执行该限制，即使存储引擎可能能够支持更大的行。
											</font>
										</font>
									</p>
									<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE t (a VARCHAR(10000), b VARCHAR(10000),</code></strong>
       <strong class="userinput"><code>c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000),</code></strong>
       <strong class="userinput"><code>f VARCHAR(10000), g VARCHAR(6000)) ENGINE=InnoDB CHARACTER SET latin1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ERROR 1118（42000）：行大小太大。</font><font style="vertical-align: inherit;">使用的最大行大小</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
不计算BLOB的表类型是65535.这包括存储开销， </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
检查手册。</font><font style="vertical-align: inherit;">您必须将某些列更改为TEXT或BLOB</font></font><font></font>
</pre>
									<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE t (a VARCHAR(10000), b VARCHAR(10000),</code></strong>
       <strong class="userinput"><code>c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000),</code></strong>
       <strong class="userinput"><code>f VARCHAR(10000), g VARCHAR(6000)) ENGINE=MyISAM CHARACTER SET latin1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ERROR 1118（42000）：行大小太大。</font><font style="vertical-align: inherit;">使用的最大行大小</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
不计算BLOB的表类型是65535.这包括存储开销， </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
检查手册。</font><font style="vertical-align: inherit;">您必须将某些列更改为TEXT或BLOB</font></font><font></font>
</pre>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												在下面的</font>
										</font><code class="literal">MyISAM</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">示例中，更改列以</font>
										</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">TEXT</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												避免65,535字节的行大小限制并允许操作成功，因为
											</font>
										</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">BLOB</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">并且
											</font>
										</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">TEXT</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">列仅向行大小贡献9到12个字节。
											</font>
										</font>
									</p>
									<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE t (a VARCHAR(10000), b VARCHAR(10000),</code></strong>
       <strong class="userinput"><code>c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000),</code></strong>
       <strong class="userinput"><code>f VARCHAR(10000), g TEXT(6000)) ENGINE=MyISAM CHARACTER SET latin1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.02秒）</font></font><font></font>
</pre>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												对于</font>
										</font><code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												表</font>
											<font style="vertical-align: inherit;">的操作成功，</font>
											<font style="vertical-align: inherit;">因为更改列以
											</font>
										</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">TEXT</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">避免MySQL 65,535字节行大小限制，并且</font>
										</font><code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												可变长度列的页外存储避免了
											</font>
										</font><code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">行大小限制。
											</font>
										</font>
									</p>
									<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE t (a VARCHAR(10000), b VARCHAR(10000),</code></strong>
       <strong class="userinput"><code>c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000),</code></strong>
       <strong class="userinput"><code>f VARCHAR(10000), g TEXT(6000)) ENGINE=InnoDB CHARACTER SET latin1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.02秒）</font></font><font></font>
</pre>
								</li>
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												可变长度列的存储包括长度字节，它们按行大小计算。</font>
											<font style="vertical-align: inherit;">例如，一
											</font>
										</font><a class="link" href="data-types.html#char" title="11.4.1 CHAR和VARCHAR类型"><code class="literal">VARCHAR(255)
												CHARACTER SET utf8mb3</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">列需要两个字节来存储值的长度，因此每个值最多可占用767个字节。
											</font>
										</font>
									</p>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												创建表的语句</font>
										</font><code class="literal">t1</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												成功，因为列需要32,765 + 2个字节和32,766 + 2个字节，这些字节的最大行大小为65,535字节：
											</font>
										</font>
									</p>
									<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE t1</code></strong>
       <strong class="userinput"><code>(c1 VARCHAR(32765) NOT NULL, c2 VARCHAR(32766) NOT NULL)</code></strong>
       <strong class="userinput"><code>ENGINE = InnoDB CHARACTER SET latin1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.02秒）</font></font><font></font>
</pre>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												创建表的语句</font>
										</font><code class="literal">t2</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">失败，因为尽管列长度在65,535字节的最大长度内，但记录长度需要两个额外的字节，这会导致行大小超过65,535字节：
											</font>
										</font>
									</p>
									<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE t2</code></strong>
       <strong class="userinput"><code>(c1 VARCHAR(65535) NOT NULL)</code></strong>
       <strong class="userinput"><code>ENGINE = InnoDB CHARACTER SET latin1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ERROR 1118（42000）：行大小太大。</font><font style="vertical-align: inherit;">使用的最大行大小</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
不计算BLOB的表类型是65535.这包括存储开销， </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
检查手册。</font><font style="vertical-align: inherit;">您必须将某些列更改为TEXT或BLOB</font></font><font></font>
</pre>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												将列长度减少到65,533或更少可以使语句成功。
											</font>
										</font>
									</p>
									<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE t2</code></strong>
       <strong class="userinput"><code>(c1 VARCHAR(65533) NOT NULL)</code></strong>
       <strong class="userinput"><code>ENGINE = InnoDB CHARACTER SET latin1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.01秒）</font></font><font></font>
</pre>
								</li>
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												对于</font>
										</font><a class="link" href="storage-engines.html#myisam-storage-engine" title="16.2 MyISAM存储引擎"><code class="literal">MyISAM</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">表，
											</font>
										</font><code class="literal">NULL</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">列需要行中的额外空间来记录它们的值是否为
											</font>
										</font><code class="literal">NULL</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。</font>
											<font style="vertical-align: inherit;">每</font>
										</font><code class="literal">NULL</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												列额外增加一位，向上舍入到最近的字节。
											</font>
										</font>
									</p>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												创建表的语句</font>
										</font><code class="literal">t3</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">失败，因为</font>
											<font style="vertical-align: inherit;">除了可变长度列长度字节所需的空间之外还</font>
										</font><a class="link" href="storage-engines.html#myisam-storage-engine" title="16.2 MyISAM存储引擎"><code class="literal">MyISAM</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">需要</font>
										</font><code class="literal">NULL</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">列的空间，导致行大小超过65,535字节：
											</font>
										</font>
									</p>
									<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE t3</code></strong>
       <strong class="userinput"><code>(c1 VARCHAR(32765) NULL, c2 VARCHAR(32766) NULL)</code></strong>
       <strong class="userinput"><code>ENGINE = MyISAM CHARACTER SET latin1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ERROR 1118（42000）：行大小太大。</font><font style="vertical-align: inherit;">使用的最大行大小</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
不计算BLOB的表类型是65535.这包括存储开销， </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
检查手册。</font><font style="vertical-align: inherit;">您必须将某些列更改为TEXT或BLOB</font></font><font></font>
</pre>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												有关</font>
											<font style="vertical-align: inherit;">列存储的</font>
											<font style="vertical-align: inherit;">信息</font>
											<font style="vertical-align: inherit;">，请参见
											</font><a class="xref" href="innodb-storage-engine.html#innodb-row-format" title="15.10 InnoDB行格式">
												<font style="vertical-align: inherit;">第15.10节“InnoDB行格式”</font>
											</a>
											<font style="vertical-align: inherit;">。
											</font>
										</font><a class="link" href="innodb-storage-engine.html" title="第15章InnoDB存储引擎"><code class="literal">InnoDB</code></a>
										<code class="literal">NULL</code>
										<font style="vertical-align: inherit;"></font><a class="xref" href="innodb-storage-engine.html#innodb-row-format"
										 title="15.10 InnoDB行格式">
											<font style="vertical-align: inherit;"></font>
										</a>
										<font style="vertical-align: inherit;"></font>
									</p>
								</li>
								<li class="listitem">
									<p>
										<code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">将行大小（对于本地存储在数据库页面中的数据）限制为略小于数据库页面的一半（4KB，8KB，16KB和32KB
											</font>
										</font><a class="link" href="innodb-storage-engine.html#sysvar_innodb_page_size"><code class="literal">innodb_page_size</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												设置），对于64KB页面，略小于16KB。
											</font>
										</font>
									</p>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												创建表的语句</font>
										</font><code class="literal">t4</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">失败，因为定义的列超过了16KB </font>
										</font><code class="literal">InnoDB</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">页面</font>
											<font style="vertical-align: inherit;">的行大小限制</font>
											<font style="vertical-align: inherit;">。
											</font>
										</font>
									</p>
									<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE t4 (</code></strong>
       <strong class="userinput"><code>c1 CHAR(255),c2 CHAR(255),c3 CHAR(255),</code></strong>
       <strong class="userinput"><code>c4 CHAR(255),c5 CHAR(255),c6 CHAR(255),</code></strong>
       <strong class="userinput"><code>c7 CHAR(255),c8 CHAR(255),c9 CHAR(255),</code></strong>
       <strong class="userinput"><code>c10 CHAR(255),c11 CHAR(255),c12 CHAR(255),</code></strong>
       <strong class="userinput"><code>c13 CHAR(255),c14 CHAR(255),c15 CHAR(255),</code></strong>
       <strong class="userinput"><code>c16 CHAR(255),c17 CHAR(255),c18 CHAR(255),</code></strong>
       <strong class="userinput"><code>c19 CHAR(255),c20 CHAR(255),c21 CHAR(255),</code></strong>
       <strong class="userinput"><code>c22 CHAR(255),c23 CHAR(255),c24 CHAR(255),</code></strong>
       <strong class="userinput"><code>c25 CHAR(255),c26 CHAR(255),c27 CHAR(255),</code></strong>
       <strong class="userinput"><code>c28 CHAR(255),c29 CHAR(255),c30 CHAR(255),</code></strong>
       <strong class="userinput"><code>c31 CHAR(255),c32 CHAR(255),c33 CHAR(255)</code></strong>
       <strong class="userinput"><code>) ENGINE=InnoDB ROW_FORMAT=DYNAMIC DEFAULT CHARSET latin1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ERROR 1118（42000）：行大小太大（&gt; 8126）。</font><font style="vertical-align: inherit;">将某些列更改为TEXT或BLOB可能会有所帮助。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
在当前行格式中，0字节的BLOB前缀以内联方式存储。</font></font><font></font>
</pre>
								</li>
							</ul>
						</div>

					</div>

				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="limits-windows"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">C.10.5 Windows平台限制</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091495975808"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以下限制适用于在Windows平台上使用MySQL：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p>
									<span class="bold"><strong>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">进程内存</font>
											</font>
										</strong></span>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											在Windows 32位平台上，默认情况下，在单个进程（包括MySQL）中使用超过2GB的RAM是不可能的。</font>
										<font style="vertical-align: inherit;">这是因为Windows
											32位的物理地址限制为4GB，Windows中的默认设置是在内核（2GB）和用户/应用程序（2GB）之间拆分虚拟地址空间。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											某些版本的Windows具有启动时设置，可通过减少内核应用程序来启用更大的应用程序。</font>
										<font style="vertical-align: inherit;">或者，要使用超过2GB的空间，请使用64位版本的Windows。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<span class="bold"><strong>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">文件系统别名</font>
											</font>
										</strong></span>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											使用</font>
									</font><code class="literal">MyISAM</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表时，不能在Windows链接中使用别名链接到另一个卷上的数据文件，然后链接回主MySQL
										</font>
									</font><a class="link" href="server-administration.html#option_mysqld_datadir"><code class="option">datadir</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">位置。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											此工具通常用于将数据和索引文件移动到RAID或其他快速解决方案。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<span class="bold"><strong>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">端口数量有限</font>
											</font>
										</strong></span>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											Windows系统有大约4,000个端口可用于客户端连接，并且在端口上的连接关闭后，需要两到四分钟才能重用端口。</font>
										<font style="vertical-align: inherit;">在客户端以高速率连接到服务器和从服务器断开连接的情况下，所有可用端口可能会在关闭端口再次可用之前用完。</font>
										<font style="vertical-align: inherit;">如果发生这种情况，即使MySQL服务器正在运行，它也似乎没有响应。</font>
										<font style="vertical-align: inherit;">端口也可以由机器上运行的其他应用程序使用，在这种情况下，MySQL可用的端口数量较少。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											有关此问题的详细信息，请参阅
										</font>
									</font><a class="ulink" href="http://support.microsoft.com/default.aspx?scid=kb;en-us;196271" target="_top">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">http://support.microsoft.com/default.aspx?scid=kb;en-us;196271</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<span class="bold"><strong><code class="literal">DATA DIRECTORY</code>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;"> 和
												</font>
											</font><code class="literal">INDEX DIRECTORY</code>
										</strong></span>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">Windows上仅支持</font>
										<font style="vertical-align: inherit;">表</font>
										<font style="vertical-align: inherit;">
											的</font>
									</font><code class="literal">DATA DIRECTORY</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">选项
										</font>
										<font style="vertical-align: inherit;">，如</font><a class="xref" href="innodb-storage-engine.html#tablespace-placing"
										 title="15.6.3.6在数据目录之外创建表空间">
											<font style="vertical-align: inherit;">第15.6.3.6节“在数据目录外创建表空间”中所述</font>
										</a>
										<font style="vertical-align: inherit;">。</font>
										<font style="vertical-align: inherit;">对于
										</font>
										<font style="vertical-align: inherit;">和其他存储引擎，</font>
										<font style="vertical-align: inherit;">在Windows和任何其他具有非功能</font>
										<font style="vertical-align: inherit;">
											调用的</font>
										<font style="vertical-align: inherit;">平台上将忽略</font>
										<font style="vertical-align: inherit;">其
										</font>
										<font style="vertical-align: inherit;">选项</font>
										<font style="vertical-align: inherit;">和</font>
										<font style="vertical-align: inherit;">选项</font>
										<font style="vertical-align: inherit;">。
										</font>
									</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
											TABLE</code></a>
									<font style="vertical-align: inherit;"></font><code class="literal">InnoDB</code>
									<font style="vertical-align: inherit;"></font><a class="xref" href="innodb-storage-engine.html#tablespace-placing"
									 title="15.6.3.6在数据目录之外创建表空间">
										<font style="vertical-align: inherit;"></font>
									</a>
									<font style="vertical-align: inherit;"></font><code class="literal">MyISAM</code>
									<font style="vertical-align: inherit;"></font><code class="literal">DATA DIRECTORY</code>
									<font style="vertical-align: inherit;"></font><code class="literal">INDEX
										DIRECTORY</code>
									<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code
										 class="literal">CREATE
											TABLE</code></a>
									<font style="vertical-align: inherit;"></font><code class="literal">realpath()</code>
									<font style="vertical-align: inherit;"></font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<span class="bold"><strong><a class="link" href="sql-syntax.html#drop-database" title="13.1.24 DROP DATABASE语法"><code
												 class="literal">DROP
													DATABASE</code></a></strong></span>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您不能删除另一个会话正在使用的数据库。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<span class="bold"><strong>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">不区分大小写的名称</font>
											</font>
										</strong></span>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											Windows上的文件名不区分大小写，因此MySQL数据库和表名在Windows上也不区分大小写。</font>
										<font style="vertical-align: inherit;">唯一的限制是必须在给定语句中使用相同的大小写指定数据库和表名。</font>
										<font style="vertical-align: inherit;">请参见
										</font>
									</font><a class="xref" href="language-structure.html#identifier-case-sensitivity" title="9.2.2标识符区分大小写">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">第9.2.2节“标识符区分大小写”</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<span class="bold"><strong>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">目录和文件名</font>
											</font>
										</strong></span>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											在Windows上，MySQL Server仅支持与当前ANSI代码页兼容的目录和文件名。</font>
										<font style="vertical-align: inherit;">例如，以下日语目录名称将无法在Western语言环境中使用（代码页1252）：
										</font>
									</font>
								</p>
								<pre data-lang="ini" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">DATADIR = “C：/私たちのプロジェクトのデータ”
</font></font></pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											同样的限制适用于SQL语句中引用的目录和文件名，例如数据文件路径名</font>
									</font><a class="link" href="sql-syntax.html#load-data" title="13.2.7 LOAD DATA语法"><code class="literal">LOAD
											DATA</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<span class="bold"><strong>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">该</font>
											</font><code class="literal">\</code>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">路径名分隔符</font>
											</font>
										</strong></span>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											Windows中的路径名组件由</font>
									</font><code class="literal">\</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">字符</font>
										<font style="vertical-align: inherit;">分隔，该
										</font>
										<font style="vertical-align: inherit;">字符也是MySQL中的转义字符。</font>
										<font style="vertical-align: inherit;">如果您正在使用
										</font>
									</font><a class="link" href="sql-syntax.html#load-data" title="13.2.7 LOAD DATA语法"><code class="literal">LOAD
											DATA</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">或
										</font>
									</font><a class="link" href="sql-syntax.html#select-into" title="13.2.10.1 SELECT ... INTO语法"><code class="literal">SELECT
											... INTO
											OUTFILE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，请使用带有</font>
									</font><code class="literal">/</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">字符的</font>
										<font style="vertical-align: inherit;">Unix样式文件名
										</font>
										<font style="vertical-align: inherit;">：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr;</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt;</font></font><strong class="userinput"><code>SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;</code></strong>
</pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											或者，您必须加倍</font>
									</font><code class="literal">\</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											角色：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>LOAD DATA INFILE 'C:\\tmp\\skr.txt' INTO TABLE skr;</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt;</font></font><strong class="userinput"><code>SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;</code></strong>
</pre>
							</li>
							<li class="listitem">
								<p>
									<span class="bold"><strong>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">管道问题</font>
											</font>
										</strong></span>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											管道在Windows命令行提示符下无法可靠地工作。</font>
										<font style="vertical-align: inherit;">如果管道包含字符
										</font>
									</font><code class="literal">^Z</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">/ </font>
									</font><code class="literal">CHAR(24)</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，Windows认为它遇到了文件结束并中止了程序。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											当您尝试应用二进制日志时，这主要是一个问题，如下所示：
										</font>
									</font>
								</p>
								<pre data-lang="terminal" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">C：\&gt; </font></font><strong class="userinput"><code>mysqlbinlog <em class="replaceable"><code>binary_log_file</code></em> | mysql --user=root</code></strong>
</pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											如果您在应用日志时遇到问题并怀疑是因为</font>
									</font><code class="literal">^Z</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">/
										</font>
									</font><code class="literal">CHAR(24)</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">字符，则可以使用以下解决方法：
										</font>
									</font>
								</p>
								<pre data-lang="terminal" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">C：\&gt; </font><font style="vertical-align: inherit;">
C：\&gt;</font></font><strong class="userinput"><code>mysqlbinlog <em class="replaceable"><code>binary_log_file</code></em> --result-file=/tmp/bin.sql</code></strong><font style="vertical-align: inherit;"></font><strong class="userinput"><code>mysql --user=root --execute "source /tmp/bin.sql"</code></strong>
</pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											后一个命令也可用于可靠地读取任何可能包含二进制数据的SQL文件。
										</font>
									</font>
								</p>
							</li>
						</ul>
					</div>

				</div>

			</div>

		</div>
		<div class="copyright-footer">

		</div>
		<div class="navfooter">
			<hr>
			<table width="100%" summary="Navigation footer">
				<tbody>
					<tr>
						<td width="40%" align="left"><a accesskey="p" href="error-handling.html">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">上一页</font>
								</font>
							</a></td>
						<td width="20%" align="center"><a accesskey="u" href="">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">向上</font>
								</font>
							</a></td>
						<td width="40%" align="right">&nbsp;<a accesskey="n" href="indexes.html">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">下一个</font>
								</font>
							</a></td>
					</tr>
					<tr>
						<td width="40%" align="left" valign="top">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">附录B错误，错误代码和常见问题</font>
							</font>
						</td>
						<td width="20%" align="center"><a accesskey="h" href="index.html">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">家</font>
								</font>
							</a></td>
						<td width="40%" align="right" valign="top">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">附录D索引</font>
							</font>
						</td>
					</tr>
				</tbody>
			</table>
		</div>


		<div id="goog-gt-tt" class="skiptranslate" dir="ltr">
			<div style="padding: 8px;">
				<div>
					<div class="logo"><img src="https://www.gstatic.com/images/branding/product/1x/translate_24dp.png" width="20"
						 height="20" alt="Google 翻译"></div>
				</div>
			</div>
			<div class="top" style="padding: 8px; float: left; width: 100%;">
				<h1 class="title gray">原文</h1>
			</div>
			<div class="middle" style="padding: 8px;">
				<div class="original-text"></div>
			</div>
			<div class="bottom" style="padding: 8px;">
				<div class="activity-links"><span class="activity-link">提供更好的翻译建议</span><span class="activity-link"></span></div>
				<div class="started-activity-container">
					<hr style="color: #CCC; background-color: #CCC; height: 1px; border: none;">
					<div class="activity-root"></div>
				</div>
			</div>
			<div class="status-message" style="display: none;"></div>
		</div>
		<div id="cntvlive2-is-installed"></div>
		<div class="goog-te-spinner-pos">
			<div class="goog-te-spinner-animation"><svg xmlns="http://www.w3.org/2000/svg" class="goog-te-spinner" width="96px"
				 height="96px" viewBox="0 0 66 66">
					<circle class="goog-te-spinner-path" fill="none" stroke-width="6" stroke-linecap="round" cx="33" cy="33" r="30"></circle>
				</svg></div>
		</div>
	</body>
</html>
